Introdução ao ARIA: role, aria-label e aria-hidden
Dê um primeiro passo no mundo do ARIA e aprenda a enriquecer elementos HTML com informações extras para tecnologias assistivas.
Até agora, aprendemos que o HTML semântico é a base da acessibilidade.
Usar as tags corretas (<button>, <nav>, <h1>, etc.) já fornece
muita informação para tecnologias assistivas como leitores de tela.
No entanto, nem sempre o HTML semântico é suficiente.
Às vezes, precisamos criar componentes de interface complexos (como abas, acordeões, carrosséis) que não têm uma tag HTML semântica equivalente, ou precisamos adicionar informações extras a elementos HTML existentes. É aí que entra o ARIA (Accessible Rich Internet Applications).
O ARIA é um conjunto de atributos especiais que você pode adicionar a elementos HTML para fornecer informações adicionais sobre seu papel, estado e propriedades para tecnologias assistivas.
A regra de ouro do ARIA: "Use HTML semântico primeiro"
Antes de pensar em ARIA, sempre se pergunte: "Existe uma tag HTML semântica que já faz o que eu preciso?". Se sim, use-a! O HTML nativo é sempre preferível ao ARIA, pois é mais robusto, tem suporte nativo e não requer JavaScript para funcionar.
- Exemplo: Se você precisa de um botão, use
<button>. Não use<div role="button">.
Atributos ARIA essenciais: role, aria-label e aria-hidden
Vamos explorar alguns dos atributos ARIA mais comuns e úteis.
1. role: Definindo o papel de um elemento
O atributo role informa às tecnologias assistivas qual é o
"papel" de um elemento na interface do usuário, quando o HTML
nativo não consegue expressar isso adequadamente.
Como funciona:
- Você adiciona
role="nome-do-papel"a um elemento HTML. - Existem diversos papéis ARIA (ex:
button,checkbox,tab,alert,navigation,main).
Exemplo:
Imagine que, por algum motivo, você não pode usar a tag <nav>
para sua navegação principal. Você poderia usar um <div> e
adicionar o role="navigation":
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de ARIA Role</title>
<style>
body { font-family: sans-serif; margin: 20px; }
.minha-nav {
background-color: #f0f0f0;
padding: 10px;
border-radius: 5px;
}
.minha-nav ul { list-style: none; padding: 0; margin: 0; display: flex; gap: 15px; }
.minha-nav a { text-decoration: none; color: dodgerblue; font-weight: bold; }
</style>
</head>
<body>
<h1>Minha Página</h1>
<!-- Exemplo de uso de role="navigation" em um div -->
<div role="navigation" class="minha-nav">
<ul>
<li><a href="#">Início</a></li>
<li><a href="#">Produtos</a></li>
<li><a href="#">Contato</a></li>
</ul>
</div>
<p>Este é o conteúdo principal da página.</p>
</body>
</html>
Importante sobre role:
- Não substitua HTML semântico: Se você pode usar
<nav>, use<nav>.role="navigation"em um<div>é um fallback, não a primeira escolha. - Melhora a semântica: Ajuda leitores de tela a entenderem a função do elemento.
2. aria-label: Fornecendo um rótulo acessível
O atributo aria-label é usado para fornecer um rótulo de texto
acessível para um elemento quando não há um rótulo visível ou
quando o rótulo visível não é suficiente.
Como funciona:
- Você adiciona
aria-label="Texto do rótulo"a um elemento. - O texto do
aria-labelé lido por tecnologias assistivas em vez (ou em adição) ao conteúdo visível do elemento.
Exemplo:
Botão de fechar (apenas ícone):
<button aria-label="Fechar">X</button>Campo de busca sem
<label>visível (não recomendado, mas possível):<input type="search" aria-label="Pesquisar no site">Navegação com múltiplos menus (para diferenciar):
<nav aria-label="Navegação Principal">...</nav> <nav aria-label="Navegação Secundária">...</nav>
Importante sobre aria-label:
- Não substitua
<label>: Para campos de formulário, sempre use a tag<label>visível associada ao campo.aria-labelé para casos onde um rótulo visível não é prático ou suficiente. - Seja conciso e descritivo: O texto deve ser claro e direto.
3. aria-hidden: Escondendo conteúdo de tecnologias assistivas
O atributo aria-hidden é usado para indicar que um elemento e
todos os seus descendentes não devem ser expostos a tecnologias
assistivas.
Como funciona:
- Você adiciona
aria-hidden="true"a um elemento. - O conteúdo ainda é visível na tela, mas é ignorado por leitores de tela.
Exemplo:
Ícones puramente decorativos: Se você usa um ícone que é apenas visual e não adiciona nenhuma informação semântica (e não tem
altouaria-labelem seu elemento pai), você pode escondê-lo.<span class="icone-decorativo" aria-hidden="true"></span>Conteúdo duplicado ou fora da tela: Em alguns componentes interativos (como carrosséis), pode haver conteúdo que está visualmente fora da tela, mas ainda é acessível por leitores de tela.
aria-hidden="true"pode ser usado para escondê-lo até que seja relevante.
Importante sobre aria-hidden:
- Não esconda conteúdo importante: Use com extrema cautela. Nunca esconda conteúdo que seja essencial para a compreensão ou interação do usuário.
- Visibilidade visual vs. acessibilidade:
aria-hiddenafeta apenas a acessibilidade para tecnologias assistivas, não a visibilidade visual.
Resumindo
- ARIA (Accessible Rich Internet Applications) é um conjunto de atributos para adicionar informações extras a elementos HTML, melhorando a acessibilidade para tecnologias assistivas.
- Regra de Ouro: Use HTML semântico primeiro! ARIA é um complemento, não um substituto.
role: Define o papel de um elemento (ex:role="button",role="navigation").aria-label: Fornece um rótulo de texto acessível quando não há um rótulo visível ou ele é insuficiente.aria-hidden="true": Esconde um elemento e seus descendentes de tecnologias assistivas (use com cautela para conteúdo decorativo ou fora da tela).
O ARIA é uma ferramenta poderosa, mas deve ser usada com responsabilidade e conhecimento para evitar criar mais problemas de acessibilidade do que resolver.