Czy można wybrać elementy w CSS według ich atrybutów danych HTML5 (na przykład data-role
)?
Czy można wybrać elementy w CSS według ich atrybutów danych HTML5 (na przykład data-role
)?
Odpowiedzi:
Jeśli masz na myśli użycie selektora atrybutów , jasne, dlaczego nie:
[data-role="page"] {
/* Styles */
}
Istnieje wiele selektorów atrybutów, których można użyć w różnych scenariuszach, z których wszystkie są opisane w dokumencie, do którego prowadzę link. Pamiętaj, że mimo że niestandardowe atrybuty danych są „nową funkcją HTML5”,
przeglądarki zazwyczaj nie mają żadnych problemów z obsługą niestandardowych atrybutów, więc powinieneś być w stanie filtrować je za pomocą selektorów atrybutów; i
nie musisz się również martwić o sprawdzanie poprawności CSS, ponieważ CSS nie dba o nazwy atrybutów bez przestrzeni nazw, o ile nie łamią one składni selektora.
$("#element").data("field","value");
że nie zmienia wartości atrybutów danych, jedynie modyfikuje wersję DOM buforowanej przez jQuery wersji. Aby zmienić rzeczywisty atrybut DOM należy użyć $("#element").attr("data-field","value");
. Unieważnienie mojego oryginalnego komentarza.
W nowoczesnych przeglądarkach można również wybierać atrybuty niezależnie od ich zawartości
z:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Na przykład: http://codepen.io/jasonm23/pen/fADnu
Działa na bardzo znacznym odsetku przeglądarek.
Uwaga: można tego również użyć w selektorze JQuery lub za pomocą document.querySelector
^=
, *=
i $=
) są również obsługiwane przez IE7 i IE8. Być może zostały wprowadzone w IE przed ich standaryzacją.
Warto zauważyć selektory atrybutów podciągów CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Możesz łączyć wiele selektorów, a to jest tak fajne, wiedząc, że możesz wybrać każdy atrybut i atrybut na podstawie ich wartości, tak jak href
na podstawie ich wartości, tylko z CSS.
Selektory atrybutów umożliwiają zabawę z dodatkowymi atrybutami id
iclass
Oto niesamowita lektura na temat selektorów atrybutów
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>
Obsługa przeglądarek:
IE6 +, Chrome, Firefox i Safari
Możesz sprawdzić szczegóły tutaj .
[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 */
}