È possibile selezionare elementi nei CSS in base ai loro attributi di dati HTML5 (ad esempio data-role
)?
È possibile selezionare elementi nei CSS in base ai loro attributi di dati HTML5 (ad esempio data-role
)?
Risposte:
Se intendi usare un selettore di attributi , certo, perché no:
[data-role="page"] {
/* Styles */
}
Esistono vari selettori di attributi che è possibile utilizzare per vari scenari, tutti trattati nel documento a cui mi collego. Tieni presente che, nonostante gli attributi di dati personalizzati siano una "nuova funzionalità HTML5",
i browser in genere non hanno problemi a supportare attributi non standard, quindi dovresti essere in grado di filtrarli con selettori di attributi; e
non devi preoccuparti nemmeno della convalida CSS, poiché i CSS non si preoccupano dei nomi di attributi non spaziati purché non interrompano la sintassi del selettore.
$("#element").data("field","value");
che non cambi il valore degli attributi dei dati, ma modifica solo la versione cache del DOM di jQuery. Per modificare l'attuale attributo DOM è necessario utilizzare $("#element").attr("data-field","value");
. Rendere il mio commento originale non valido.
È anche possibile selezionare gli attributi indipendentemente dal loro contenuto, nei browser moderni
con:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Ad esempio: http://codepen.io/jasonm23/pen/fADnu
Funziona su una percentuale molto significativa di browser.
Nota che può essere usato anche in un selettore JQuery o usando document.querySelector
^=
, *=
e $=
) sono supportati anche da IE7 e IE8. Forse sono stati introdotti in IE prima di essere standardizzati.
Vale la pena notare i selettori degli attributi di sottostringa CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Puoi combinare più selettori e questo è così bello sapere che puoi selezionare ogni attributo e attributo in base al loro valore come href
basato sui loro valori solo con CSS.
I selettori di attributi ti consentono di giocare con qualche extra con id
e class
attributi
Ecco una fantastica lettura sui selettori di attributi
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>
Supporto per browser:
IE6 +, Chrome, Firefox e Safari
Puoi controllare i dettagli qui .
[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 */
}