É possível selecionar elementos em CSS pelos atributos de dados HTML5 (por exemplo, data-role
)?
É possível selecionar elementos em CSS pelos atributos de dados HTML5 (por exemplo, data-role
)?
Respostas:
Se você quer dizer usar um seletor de atributos , por que não:
[data-role="page"] {
/* Styles */
}
Há uma variedade de seletores de atributos que você pode usar para vários cenários, todos abordados no documento ao qual vinculo. Observe que, apesar dos atributos de dados personalizados serem um "novo recurso HTML5",
os navegadores normalmente não têm problemas para oferecer suporte a atributos não padrão; portanto, você deve poder filtrá-los com seletores de atributos; e
você também não precisa se preocupar com a validação de CSS, pois o CSS não se importa com nomes de atributos sem espaço para nome, desde que eles não quebrem a sintaxe do seletor.
$("#element").data("field","value");
que não altera o valor dos atributos de dados, apenas modifica a versão em cache do DOM do jQuery. Para alterar o atributo DOM real, é necessário usar $("#element").attr("data-field","value");
. Tornando meu comentário original inválido.
Também é possível selecionar atributos, independentemente do conteúdo, nos navegadores modernos
com:
[data-my-attribute] {
/* Styles */
}
[anything] {
/* Styles */
}
Por exemplo: http://codepen.io/jasonm23/pen/fADnu
Funciona em uma porcentagem muito significativa de navegadores.
Observe que isso também pode ser usado em um seletor JQuery ou usando document.querySelector
^=
, *=
e $=
) também são suportados pelo IE7 e IE8. Talvez eles tenham sido introduzidos no IE antes de serem padronizados.
Vale a pena notar os seletores de atributos de substring CSS3
[attribute^=value] { /* starts with selector */
/* Styles */
}
[attribute$=value] { /* ends with selector */
/* Styles */
}
[attribute*=value] { /* contains selector */
/* Styles */
}
Você pode combinar vários seletores e isso é muito legal, sabendo que é possível selecionar todos os atributos e atributos com base em seus valores, como href
baseados em seus valores, apenas com CSS.
Os seletores de atributos permitem que você brinque com alguns atributos id
eclass
Aqui está uma leitura impressionante sobre os Seletores 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>
Suporte para navegador:
IE6 +, Chrome, Firefox e Safari
Você pode verificar os detalhes aqui .
[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 */
}