Atributos Globais: O Que Vale Para Qualquer Tag
2 min de leitura
A maioria dos atributos que você viu até aqui é específica de uma tag: src
em <img>, href em <a>, type em <input>. Mas existe um conjunto que
funciona em qualquer tag HTML - os atributos globais. São pequenos
ajustes que valem para quase tudo.
<p id="aviso" class="destaque" hidden>Você não me vê.</p>
<button data-id="42" data-action="comprar" tabindex="1">
Comprar
</button>
<p lang="en-us">Hello, world!</p>
Vamos aos mais úteis:
-
id- identificador único na página. Já vimos no link âncora (#id). Use para conectar labels, ancorar links, identificar elementos via JS. Nunca repita o mesmoidna página. -
class- agrupa elementos para estilizar com CSS ou selecionar com JS. Pode repetir (vários elementos compartilham a mesma classe). -
hidden- esconde o elemento. Semântica: "isto não é relevante agora". Diferente dedisplay: nonedo CSS em alguns detalhes (anuncia mudança para leitor de tela). Use-o em vez destyle="display: none"quando puder. -
data-*- você cria o atributo.data-id,data-user-id,data-qualquer-coisa. É o canal oficial para guardar dados extras no HTML sem inventar atributo não-padrão. JS lê comelemento.dataset.id(transformadata-idem.id). -
tabindex- controla a ordem do foco com Tab.tabindex="0"- entra no fluxo de Tab na ordem natural.tabindex="-1"- removido do fluxo (só foca via JS).tabindex="1"(ou maior) - força foco antes de elementos comtabindexmenor. Evite valores positivos - bagunça a ordem natural e confunde quem navega por teclado.
-
lang- idioma do conteúdo deste elemento (sobrescreve o<html lang>). Essencial para conteúdo multilíngue na mesma página:<p>Hoje eu quero dizer <span lang="en">"I love you"</span> em inglês.</p> -
title- tooltip nativo ao passar o mouse. Use com moderação: leitores de tela nem sempre leem, e muita info importante aqui é uma armadilha de acessibilidade. -
style- CSS inline. Funciona em qualquer tag, mas evite: misturar estilo com estrutura dificulta manutenção. Prefira arquivo.css. -
contenteditable="true"- torna o conteúdo editável no navegador. É como o Google Docs faz. Raramente usado por iniciantes, mas é bom saber que existe. -
draggable="true"- permite arrastar o elemento. Combinado com a API de drag-and-drop do JavaScript. -
spellcheck="false"- desabilita o sublinhado de erro ortográfico em<input>e<textarea>. Útil em campos de slug, código, etc. -
translate- dica para ferramentas de tradução automática ("yes"ou"no"). Pouco usado, mas existe. -
dir- direção do texto:ltr(esquerda→direita, padrão) ourtl(direita→esquerda, para árabe, hebraico, persa). Veremos mais no nó de i18n.
E o atributo que não é exatamente um atributo, mas vive com eles:
-
role- faz parte da ARIA (Accessible Rich Internet Applications). Diz a leitores de tela que papel o elemento tem. Usado quando o HTML semântico não basta (ex:<div role="alert">para anunciar dinamicamente uma mensagem). Veremos mais no nó de acessibilidade. -
hiddenesconde semântica (anuncia para leitor de tela). -
data-*é o canal oficial para dados extras. -
tabindexcontrola a ordem do foco com Tab. -
langpode ir em qualquer elemento, não só no<html>. -
title,style,contenteditable,draggable,spellcheckcompletam o kit.
Dica: a maioria dos atributos globais pode ser lida ou modificada com JavaScript.
elemento.id,elemento.classList,elemento.dataset.*,elemento.hidden = true- tudo direto, semgetAttribute(que também funciona, mas é mais verboso).
No próximo nó, vamos olhar i18n básico - HTML para conteúdo em vários idiomas na mesma página.