Os atributos de dados HTML (data-*) são atributos personalizados que permitem armazenar informações extras diretamente nos elementos HTML. Introduzidos no HTML5, eles oferecem uma maneira padrão de adicionar dados próprios aos elementos.
Os atributos de dados são atributos personalizados que começam obrigatoriamente com o prefixo data- seguido pelo nome que você desejar.
<article
id="eletronicos"
data-categoria="tecnologia"
data-data-publicacao="2023-05-15"
data-autor="maria.silva">
<h2>Novos Dispositivos de 2023</h2>
<p>Conteúdo do artigo aqui...</p>
</article>Ao criar atributos de dados, siga estas regras:
- Sempre comece com o prefixo
data- - Pelo menos um caractere após o prefixo
- Apenas letras minúsculas, números, hífens, pontos, dois pontos ou sublinhados
- Não deve conter letras maiúsculas (recomendação HTML5)
- Pode armazenar qualquer string como valor
<div class="produto"
data-id="1234"
data-nome="Smartphone Pro Max"
data-preco="1999.99"
data-disponivel="true"
data-cores="preto,branco,azul">
<h3>Smartphone Pro Max</h3>
<p>R$ 1.999,99</p>
<button>Comprar</button>
</div><div class="abas">
<button data-aba-alvo="aba1" data-ativo="true">Informações</button>
<button data-aba-alvo="aba2" data-ativo="false">Especificações</button>
<button data-aba-alvo="aba3" data-ativo="false">Avaliações</button>
</div>
<div id="aba1" class="conteudo-aba">
Informações do produto aqui...
</div>
<div id="aba2" class="conteudo-aba" hidden>
Especificações técnicas aqui...
</div>
<div id="aba3" class="conteudo-aba" hidden>
Avaliações de clientes aqui...
</div><div class="galeria">
<img src="foto1.jpg"
data-tipo="paisagem"
data-local="montanhas"
data-data="2023-01-15"
data-fotografo="joão.silva"
data-descricao="Vista do nascer do sol nas montanhas">
<img src="foto2.jpg"
data-tipo="retrato"
data-local="estúdio"
data-data="2023-02-10"
data-fotografo="maria.santos"
data-descricao="Retrato profissional em fundo branco">
</div><p data-traducao-chave="bem-vindo">Bem-vindo ao nosso site!</p>
<button data-traducao-chave="continuar">Continuar</button>
<span data-traducao-chave="copyright">Todos os direitos reservados</span>Os atributos de dados podem ser utilizados como seletores CSS:
<ul>
<li data-importancia="alta">Finalizar relatório</li>
<li data-importancia="media">Responder emails</li>
<li data-importancia="baixa">Organizar arquivos</li>
</ul>/* Estilo para itens baseado no valor do atributo data-* */
[data-importancia="alta"] {
color: red;
font-weight: bold;
}
[data-importancia="media"] {
color: orange;
}
[data-importancia="baixa"] {
color: green;
}
/* Selecionando elementos que possuem qualquer valor para o atributo */
[data-traducao-chave] {
font-style: italic;
}
/* Selecionando elementos cujo atributo começa com determinado valor */
[data-local^="mont"] {
border: 1px solid blue;
}
/* Selecionando elementos cujo atributo termina com determinado valor */
[data-fotografo$="silva"] {
border-bottom: 2px dotted gray;
}
/* Selecionando elementos cujo atributo contém determinado valor */
[data-cores*="azul"] {
background-color: lightblue;
}-
Armazenar Metadados
- Guardar informações sobre um elemento que não são visíveis diretamente
- Exemplo: categorias, datas, status, IDs de referência
-
Configuração de Componentes
- Definir comportamentos ou propriedades de componentes HTML
- Exemplo: opções de carregamento, parâmetros de configuração
-
Filtragem e Ordenação
- Facilitar sistemas de filtragem e ordenação de elementos
- Exemplo: galerias filtráveis, listas ordenáveis
-
Manter Relacionamentos
- Estabelecer relações entre elementos em uma página
- Exemplo: conectar rótulos e conteúdos, itens relacionados
-
Internacionalização
- Armazenar chaves de tradução para múltiplos idiomas
- Exemplo: marcadores para sistemas de tradução dinâmica
✅ Use nomes descritivos e bem organizados para seus atributos de dados.
✅ Utilize atributos de dados para informações específicas do elemento.
✅ Prefira atributos HTML padrão quando disponíveis (alt, title, etc).
✅ Mantenha os valores simples e previsíveis.
✅ Documente os atributos personalizados usados em seu projeto.
✅ Use hífens para separar palavras em nomes compostos (data-nome-completo vs data-nomecompleto).
💡 Dica: Os atributos data-* são uma excelente forma de adicionar informações extras aos elementos HTML sem comprometer a validade do seu código ou recorrer a propriedades não padronizadas!