Ist es möglich, Elemente in CSS anhand ihrer HTML5-Datenattribute auszuwählen (z. B. data-role
)?
Ist es möglich, Elemente in CSS anhand ihrer HTML5-Datenattribute auszuwählen (z. B. data-role
)?
Antworten:
Wenn Sie einen Attributselektor verwenden möchten , warum nicht:
[data-role="page"] {
/* Styles */
}
Es gibt eine Vielzahl von Attributselektoren, die Sie für verschiedene Szenarien verwenden können, die alle in dem Dokument behandelt werden, auf das ich verweise. Beachten Sie, dass benutzerdefinierte Datenattribute zwar eine "neue HTML5-Funktion" sind,
Browser haben normalerweise keine Probleme, nicht standardmäßige Attribute zu unterstützen. Sie sollten sie daher mit Attributselektoren filtern können. und
Sie müssen sich auch nicht um die CSS-Validierung kümmern, da sich CSS nicht um Attributnamen ohne Namespace kümmert, solange diese die Selektorsyntax nicht verletzen.
$("#element").data("field","value");
scheint sich der Wert der Datenattribute nicht zu ändern, sondern nur die zwischengespeicherte Version des DOM von jQuery. Um das tatsächliche DOM-Attribut zu ändern, muss es verwendet werden $("#element").attr("data-field","value");
. Meinen ursprünglichen Kommentar ungültig machen.
In modernen Browsern ist es auch möglich, Attribute unabhängig von ihrem Inhalt auszuwählen
mit:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Zum Beispiel: http://codepen.io/jasonm23/pen/fADnu
Funktioniert mit einem sehr signifikanten Prozentsatz der Browser.
Beachten Sie, dass dies auch in einem JQuery-Selektor oder mit verwendet werden kann document.querySelector
^=
, *=
und $=
) eingeführten Teilstring-Attributselektoren auch von IE7 und IE8 unterstützt werden. Vielleicht wurden sie im IE eingeführt, bevor sie standardisiert wurden.
Es ist erwähnenswert, CSS3-Teilstring-Attributselektoren zu beachten
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Sie können mehrere Selektoren kombinieren und das ist so cool zu wissen, dass Sie jedes Attribut und Attribut basierend auf ihrem Wert auswählen können, wie href
basierend auf ihren Werten nur mit CSS.
Mit den Attribut-Selektoren können Sie einige zusätzliche Attribute id
und class
Attribute ausprobieren
Hier ist eine großartige Lektüre über Attributauswahl
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>
Browserunterstützung:
IE6 +, Chrome, Firefox & Safari
Details können Sie hier überprüfen .
[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 */
}