Чтобы определить, пишете ли вы действующие правила CSS с учетом атрибутов, вы можете найти список атрибутов HTML здесь: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
Технически, вы никогда не устанавливаете атрибут HTML с помощью CSS. Атрибуты HTML используются для настройки аспектов функциональности элемента, а не стиля (хотя некоторые стилистические пересечения обсуждаются позже). Атрибуты устанавливаются внутри или через JavaScript и могут использоваться как селекторы в CSS для стилей элементов, но их значения никогда не изменяются и не затрагиваются CSS.
Разница в том, что в CSS вы объявляете значение свойства стиля , а не функциональность элемента . Фактически, style
глобальный атрибут HTML-элементов, который принимает значение встроенных правил и функций CSS, применяя эти стили. Даже с псевдоклассами, такими как input:checked { color: red; }
, CSS не вызывает проверку элемента ввода. Скорее, он добавляет красное значение свойства color
к любому входному элементу, который проверяется (например, явно с атрибутом в html: <input checked />
.
Аналогично, в вашем примере [draggable=true]{ property: value; }
вы не изменяете функциональность любого элемента на draggable
. Вместо этого вы выбираете любой элемент с определенным атрибутом draggable
и добавляете в него свойства стиля через объявление CSS.
В то время как в вашем примере div { draggable: true; }
вы пытаетесь установить для div
s истинный стиль перетаскивания, который не работает, поскольку draggable
не является свойством стиля.
Существуют некоторые устаревшие атрибуты, чьи функциональные возможности влияют на стиль и выглядят так же, как свойства CSS (т.е. width
, height
, color
). Это те, которые могут вызвать путаницу между свойствами стиля и атрибутами элемента, поскольку они размывают линию.