HTML: Atributos HTML
Os atributos fornecem informações de configuração adicionais para as tags HTML, tornando o comportamento e a aparência dos elementos mais ricos.
1. O que são Atributos
Os atributos HTML são palavras-chave especiais escritas dentro da tag de abertura, usados para configurar as tags com mais detalhes. Os atributos são escritos no formato nome="valor" dentro da tag de abertura. Uma tag pode ter múltiplos atributos, separados por espaços.
▶ Exemplo
<!-- Atributo único -->
<a href="https://example.com">Este é um link</a>
<!-- Múltiplos atributos, separados por espaços -->
<img src="foto.jpg" alt="Uma foto de paisagem" width="800" height="600">
<!-- Os valores dos atributos são recomendados entre aspas duplas, mas aspas simples também funcionam -->
<p title='Um texto de dica'>Um parágrafo com dica</p>
Nos exemplos acima, href, src, alt, width, height e title são todos nomes de atributos, e o conteúdo dentro das aspas são os valores específicos. Os nomes dos atributos devem ser sempre escritos em letras minúsculas, e aspas duplas são recomendadas para os valores.
2. Atributos Globais Comuns
Os atributos globais são atributos que podem ser usados em qualquer tag HTML. Veja os mais utilizados:
(1) id — Identificador Único
O atributo id atribui um identificador único a um elemento. Dentro da mesma página, cada id só pode ser usado uma vez. É comumente utilizado para links de âncora, seletores CSS e operações JavaScript.
▶ Exemplo
<h1 id="titulo-pagina">Bem-vindo ao Meu Site</h1>
<!-- #titulo-pagina pode ser usado para saltar para esta posição -->
<a href="#titulo-pagina">Ir para o Título</a>
(2) class — Nome de Classe
O atributo class atribui um ou mais nomes de classe a um elemento. Diferente do id, o mesmo nome de classe pode ser reutilizado em múltiplos elementos e é o método principal para estilização CSS e seleção JavaScript.
▶ Exemplo
<!-- Múltiplos elementos podem usar a mesma classe -->
<p class="destaque">Este texto será destacado</p>
<p class="destaque">Este texto também será destacado</p>
<!-- Um elemento pode ter múltiplas classes, separadas por espaços -->
<div class="caixa borda arredondada">Esta é uma caixa arredondada com borda</div>
(3) style — Estilos Inline
O atributo style permite escrever estilos CSS diretamente dentro de uma tag. Embora não seja recomendado para uso intensivo (é melhor manter os estilos em arquivos CSS separados), é muito conveniente para testes rápidos ou para sobrepor estilos dinamicamente.
▶ Exemplo
<p style="color: red; font-size: 18px;">Este é um texto grande e vermelho</p>
<div style="background: #f0f0f0; padding: 10px; border-radius: 5px;">
Esta é uma caixa arredondada com cor de fundo
</div>
(4) title — Texto de Dica
O atributo title fornece informações adicionais para um elemento. Quando o usuário passa o mouse sobre o elemento, o navegador exibe uma dica (tooltip).
▶ Exemplo
<p title="Este é um texto de dica">Passe o mouse sobre este texto para ver o que acontece</p>
<abbr title="HyperText Markup Language">HTML</abbr>
(5) Resumo dos Atributos Globais
| Atributo | Finalidade | Unicidade | Frequência de Uso |
|---|---|---|---|
id |
Identificador único do elemento, usado para âncoras, CSS, JS | Único por página | ⭐⭐⭐⭐⭐ |
class |
Atribui nome de classe ao elemento, usado para CSS / JS | Reutilizável | ⭐⭐⭐⭐⭐ |
style |
Escreve estilos CSS diretamente na tag | — | ⭐⭐⭐ |
title |
Exibe texto de dica ao passar o mouse | — | ⭐⭐ |
lang |
Declara o idioma do conteúdo do elemento | — | ⭐⭐ |
dir |
Especifica a direção do texto (ltr / rtl) | — | ⭐ |
3. Atributos Booleanos
Os atributos booleanos são um tipo especial de atributo — eles não precisam de valor; basta estarem presentes para significar "ativado/verdadeiro". Os atributos booleanos mais comuns incluem disabled, checked, readonly e required.
▶ Exemplo
<!-- Campo de entrada desativado -->
<input type="text" disabled>
<!-- Checkbox pré-selecionado -->
<input type="checkbox" checked> Eu concordo com os termos
<!-- Campo de entrada somente leitura -->
<input type="text" value="Conteúdo somente leitura" readonly>
<!-- Campo obrigatório -->
<input type="email" required>
Os atributos booleanos também podem ser escritos como nome="nome", por exemplo disabled="disabled". Ambas as formas produzem exatamente o mesmo efeito. A forma concisa (apenas o nome do atributo) é a recomendada.
nome="nome" apenas quando a sintaxe XHTML estritamente exigir.
4. Atributos Personalizados data-*
O HTML5 introduziu um recurso muito flexível: atributos personalizados. Você pode criar seus próprios atributos em qualquer tag HTML, desde que o nome do atributo comece com data-. O objetivo é armazenar dados adicionais dentro das tags HTML para uso do JavaScript e CSS.
Por exemplo, imagine que você tem uma lista de produtos e quer armazenar o preço e a quantidade em estoque de cada produto — esses dados não precisam ser exibidos na página, mas o JavaScript precisa lê-los para a lógica interativa.
▶ Exemplo
<ul>
<li data-product-id="101" data-price="29.9" data-stock="50">Camiseta - R$ 29,90</li>
<li data-product-id="102" data-price="99.9" data-stock="20">Mochila - R$ 99,90</li>
<li data-product-id="103" data-price="199" data-stock="0">Fones de Ouvido - R$ 199,00 (Esgotado)</li>
</ul>
<script>
// Acesse data-* via a API dataset
const items = document.querySelectorAll('li');
for (let item of items) {
console.log(item.dataset.productId); // "101", "102", "103"
console.log(item.dataset.price); // "29.9", "99.9", "199"
}
</script>
Neste exemplo, data-product-id, data-price e data-stock são atributos que definimos nós mesmos. Eles não afetam a exibição da página, mas o JavaScript pode lê-los facilmente. Clique em "Experimente" abaixo e abra o console do desenvolvedor (F12) para ver os dados lidos.
Regras de Nomenclatura: No HTML, use data-user-name (separado por hífens). No JavaScript, o acesso correspondente é dataset.userName (camelCase). A primeira letra após cada hífen é automaticamente convertida para maiúscula.
▶ Exemplo
<div data-user-name="João Silva" data-user-age="20">Informações do Usuário</div>
<script>
// Ler data-user-name → dataset.userName (camelCase)
const div = document.querySelector('div');
console.log(div.dataset.userName); // "João Silva"
console.log(div.dataset.userAge); // "20"
</script>
data-* são muito comuns no desenvolvimento front-end, por exemplo para armazenar IDs de usuário, estados de ordenação, tipos de botão, configurações de gráficos, etc. São mais intuitivos do que manter um objeto de dados separado no JavaScript, pois os dados "vivem junto" com a estrutura HTML correspondente. Você usará bastante esse recurso nos capítulos de JavaScript mais adiante.
data-* devem ser usados apenas para armazenar dados relacionados à exibição da página, não como substituto de bancos de dados ou armazenamento no back-end. Informações sensíveis (como senhas, chaves de API) nunca devem ser colocadas em data-* — pois qualquer pessoa pode visualizá-las ao inspecionar o código-fonte da página.
❓ Perguntas Frequentes
"valor") são o padrão da indústria. Aspas simples ('valor') também são válidas no HTML5, mas aspas duplas são preferidas pela legibilidade e consistência. Use aspas simples apenas quando o valor contiver aspas duplas (como title='Ele disse "Olá"'). Omitir aspas pode funcionar em alguns casos, mas pode causar erros de análise — nunca recomendado.id e class? Quando uso cada um?id é como um RG — cada página pode ter apenas um elemento com um determinado id, sendo único. class é como um nome de turma — múltiplos elementos podem compartilhar o mesmo class, sendo reutilizável. Na prática, use class em 90% dos casos porque reutilização de estilo é a norma. id tem maior especificidade CSS, mas não abuse apenas pela prioridade. Lembre-se: id para mirar com JavaScript, class para estilizar com CSS.disabled e checked não precisam de valor?false; para desativar, simplesmente remova o atributo. Exemplo: <input disabled> desabilita a entrada; remova disabled para habilitar. Não escreva disabled="true" (redundante) ou disabled="false" (não vai desabilitar — um erro comum).📖 Resumo
- Os atributos são escritos no formato
nome="valor"dentro das tags de abertura, com múltiplos atributos separados por espaços. - Atributos globais funcionam em qualquer tag:
id(identificador único),class(nome de classe reutilizável),style(estilos inline),title(texto de dica). - Atributos booleanos não precisam de valor; sua presença indica "ativado":
disabled,checked,readonly,required. - Atributos personalizados
data-*armazenam dados extras nas tags; o JavaScript os lê via APIdataset.
📝 Exercícios
- Prática de Combinação de Atributos: Crie uma página contendo os seguintes elementos:
- Um parágrafo com os atributos
id,classestyle; - Um link com o atributo
title(passe o mouse para ver a dica); - Um campo de entrada com o atributo
disabled(acinzentado, não clicável).
- Um parágrafo com os atributos
- Prática de data-*: Crie uma lista de cards de produtos onde cada card usa atributos
data-*para armazenar o nome do produto, preço e estoque. Depois, use JavaScript para ler esses dados no console do navegador viadocument.querySelectorAlledataset.