Usando data-* com seletores de atributos do CSS
Estilize elementos condicionalmente com base nos valores dos atributos de dados.
Usando data-* com seletores de atributos do CSS é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.
Seletores de atributo do CSS
Os seletores de atributo do CSS correspondem a elementos com base na presença e no valor dos atributos: [data-state] corresponde a qualquer elemento com um atributo data-state; [data-state="active"] corresponde somente quando o valor é igual a "active".
Seletor de presença
[data-tooltip] corresponde a elementos que têm o atributo data-tooltip, independentemente do valor. Use-o para aplicar estilos básicos de dica de ferramenta a qualquer elemento que tenha dados de dica associados, antes de considerar o conteúdo da dica.
Seletor de correspondência exata
[data-theme="dark"] corresponde somente a elementos cujo data-theme seja exatamente igual a "dark". Isso permite estilizar com base no tema: aplique tokens de cor escuros quando o elemento HTML tiver data-theme="dark" definido por JavaScript.
Seletores de correspondência parcial
[data-icon^="arrow"] corresponde a valores que começam com "arrow". [data-label$="ing"] corresponde a valores que terminam com "ing". [data-tag*="feature"] corresponde a valores que contêm "feature". Eles permitem estilização baseada em padrões sem adicionar muitas classes.
Máquina de estados com data-*
Modele o estado do componente com atributos data-state: [data-state="idle"], [data-state="loading"], [data-state="error"]. As regras CSS para cada estado substituem vários nomes de classes condicionais, mantendo o estado em um único atributo e os estilos claramente separados.
[data-state="loading"] .spinner { display: block; }
[data-state="error"] .message { color: var(--color-error); }Especificidade dos seletores de atributo
Os seletores de atributo têm a mesma especificidade que os seletores de classe (0,1,0). Ao combiná-los com seletores de elemento: button[data-variant="primary"] tem especificidade (0,1,1). Planeje a especificidade dos seletores de atributo junto com as regras baseadas em classes para evitar conflitos.
Padrão de dica de ferramenta
Uma dica de ferramenta feita apenas com CSS e data-tooltip: aplique ::after { content: attr(data-tooltip) } ao passar o cursor. A função content: attr() lê o valor do atributo e o usa como conteúdo do pseudo-elemento — não são necessários JavaScript nem elementos HTML adicionais.
[data-tooltip]:hover::after {
content: attr(data-tooltip);
position: absolute;
background: #333;
color: white;
padding: 4px 8px;
border-radius: 4px;
}data-* versus class para estilização
Use classes para indicar a intenção de estilização (is-active, has-error) e atributos de dados para a carga de dados (data-user-id, data-count). Quando o mesmo atributo orienta tanto o comportamento (JS o lê) quanto a estilização (CSS o seleciona), data-* elimina a duplicação entre JS e CSS.
Combinação de seletores data-*
Encadeie vários seletores de atributo: [data-type="button"][data-size="large"] corresponde a elementos que têm os dois atributos definidos. Isso cria uma correspondência composta sem exigir uma classe combinada como .button-large, reduzindo a proliferação de classes.
Observação sobre desempenho
Os seletores de atributo são um pouco mais lentos que os seletores de classe no cálculo de estilos. Para estilos estáticos, prefira classes. Use seletores de atributo quando o valor do atributo orientar o estilo (como data-state ou data-theme) e mudar em tempo de execução — quando um único atributo substitui várias classes alternadas.
Diferenciação entre maiúsculas e minúsculas
Por padrão, a correspondência de valores de atributos diferencia maiúsculas de minúsculas no HTML (mas não para códigos de idioma em XHTML). Adicione o sinalizador i para ignorar maiúsculas e minúsculas: [data-state="Active" i] corresponde a "active", "Active" e "ACTIVE".
Verificação de conhecimento
O que o seletor CSS [data-state="loading"] .spinner faz?
Resumo
Os seletores de atributo do CSS correspondem a atributos data-* por presença, valor exato ou padrões parciais. Com content: attr() para dicas de ferramenta e data-state para máquinas de estados de componentes, os atributos data-* funcionam tanto como portadores de dados quanto como pontos de ligação para estilização no CSS, sem a proliferação de classes.
Aprenda HTML com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 40
- Aulas
- 159
Perguntas Frequentes
A aula “Usando data-* com seletores de atributos do CSS” é grátis?
Sim — o texto completo de “Usando data-* com seletores de atributos do CSS” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.
O que vou aprender em “Usando data-* com seletores de atributos do CSS”?
Estilize elementos condicionalmente com base nos valores dos atributos de dados. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar HTML Academy?
Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Usando data-* com seletores de atributos do CSS”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de HTML Academy?
Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Sintaxe data-* e convenções de nomenclatura
- Acessando data-* com dataset em JavaScript
- Usando data-* com seletores de atributos do CSS
- Padrões do mundo real: dicas de ferramentas e acompanhamento de estado