¿Es posible seleccionar elementos en CSS por sus atributos de datos HTML5 (por ejemplo data-role
)?
¿Es posible seleccionar elementos en CSS por sus atributos de datos HTML5 (por ejemplo data-role
)?
Respuestas:
Si te refieres a usar un selector de atributos , claro, ¿por qué no?
[data-role="page"] {
/* Styles */
}
Hay una variedad de selectores de atributos que puede usar para varios escenarios que están cubiertos en el documento al que enlazo. Tenga en cuenta que, a pesar de que los atributos de datos personalizados son una "nueva función HTML5",
los navegadores generalmente no tienen problemas para admitir atributos no estándar, por lo que debería poder filtrarlos con selectores de atributos; y
tampoco tiene que preocuparse por la validación de CSS, ya que a CSS no le importan los nombres de atributos sin espacio de nombres siempre que no rompan la sintaxis del selector.
$("#element").data("field","value");
que no cambia el valor de los atributos de datos, solo modifica la versión en caché de jQuery del DOM. Para cambiar el atributo DOM real, uno debe usar $("#element").attr("data-field","value");
. Hacer mi comentario original inválido.
También es posible seleccionar atributos independientemente de su contenido, en los navegadores modernos
con:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Por ejemplo: http://codepen.io/jasonm23/pen/fADnu
Funciona en un porcentaje muy significativo de navegadores.
Tenga en cuenta que esto también se puede usar en un selector JQuery, o usando document.querySelector
^=
, *=
y $=
) también son compatibles con IE7 e IE8. Tal vez se introdujeron en IE antes de ser estandarizados.
Vale la pena señalar los selectores de atributos de la subcadena CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Puede combinar múltiples selectores y esto es genial sabiendo que puede seleccionar cada atributo y atributo en función de su valor, href
según sus valores solo con CSS.
Los selectores de atributos te permiten jugar con algunos atributos adicionales id
yclass
Aquí hay una lectura impresionante sobre los selectores de atributos
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>
Soporte de navegador:
IE6 +, Chrome, Firefox y Safari
Puedes consultar los detalles aquí .
[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 */
}