Можно ли выбирать элементы в CSS по их атрибутам данных HTML5 (например, data-role
)?
Можно ли выбирать элементы в CSS по их атрибутам данных HTML5 (например, data-role
)?
Ответы:
Если вы имеете в виду использование селектора атрибута , то почему бы и нет:
[data-role="page"] {
/* Styles */
}
Существует множество селекторов атрибутов, которые вы можете использовать для различных сценариев, которые описаны в документе, на который я ссылаюсь. Обратите внимание, что, несмотря на то, что пользовательские атрибуты данных являются «новой функцией HTML5»,
браузеры обычно не имеют проблем с поддержкой нестандартных атрибутов, поэтому вы должны иметь возможность фильтровать их с помощью селекторов атрибутов; а также
Вам также не нужно беспокоиться о проверке CSS, так как CSS не заботится об именах атрибутов без пространства имен, если они не нарушают синтаксис селектора.
$("#element").data("field","value");
, что значение атрибутов данных не изменяется, оно только изменяет кэшированную версию jQuery DOM. Для изменения фактического атрибута DOM необходимо использовать $("#element").attr("data-field","value");
. Сделав мой оригинальный комментарий недействительным.
В современных браузерах также можно выбирать атрибуты независимо от их содержимого.
с:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Например: http://codepen.io/jasonm23/pen/fADnu
Работает на очень значительном проценте браузеров.
Обратите внимание, что это также можно использовать в селекторе JQuery или с помощью document.querySelector
^=
, *=
и $=
), также поддерживаются IE7 и IE8. Может быть, они были введены в IE до стандартизации.
Стоит отметить селекторы атрибутов подстроки CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Вы можете комбинировать несколько селекторов, и это так здорово, зная, что вы можете выбрать каждый атрибут и атрибут на основе их значения, например href
на основе их значений только с помощью CSS.
Атрибуты селекторы позволяет играть вокруг некоторой дополнительной с id
иclass
атрибуты
Вот отличная статья о селекторах атрибутов
a[href="http://aamirshahzad.net"][title="Aamir"] {
color: green;
text-decoration: none;
}
a[id*="google"] {
color: red;
}
a[class*="stack"] {
color: yellow;
}
<a href="http://aamirshahzad.net" title="Aamir">Aamir</a>
<br>
<a href="http://google.com" id="google-link" title="Google">Google</a>
<br>
<a href="http://stackoverflow.com" class="stack-link" title="stack">stack</a>
Поддержка браузера:
IE6 +, Chrome, Firefox и Safari
Вы можете проверить детали здесь .
[data-value] {
/* Attribute exists */
}
[data-value="foo"] {
/* Attribute has this exact value */
}
[data-value*="foo"] {
/* Attribute value contains this value somewhere in it */
}
[data-value~="foo"] {
/* Attribute has this value in a space-separated list somewhere */
}
[data-value^="foo"] {
/* Attribute value starts with this */
}
[data-value|="foo"] {
/* Attribute value starts with this in a dash-separated list */
}
[data-value$="foo"] {
/* Attribute value ends with this */
}