Design Inclusivo

Acessibilidade (a11y)

Acessibilidade não é um complemento. Marcação semântica, suporte ao teclado e contraste claro tornam seu site utilizável por todos e o melhoram para cada usuário.

intermediate15 min readUpdated 15 de set. de 2026
a11y.html
html
<!-- a11y.html -->
<a href="#main" class="skip-link">Skip to content</a>

<button type="button" aria-expanded="false" aria-controls="menu">
  Menu
</button>

<main id="main">
  <h1>Accessible by default</h1>
</main>
Padrão
WCAG 2.2
Princípios
Perceptível, operável, compreensível, robusto
Fundação
HTML semântico
Teclado
Tudo operável
Contraste
4.5:1 para texto de corpo

Por que importa

Por que a acessibilidade é importante

Mais pessoas podem usar

Cerca de uma em cada seis pessoas vivem com alguma deficiência, e a acessibilidade ajuda qualquer pessoa em uma limitação temporária ou situacional também.

Melhor para todos

Estrutura clara, legendas e suporte ao teclado melhoram a usabilidade e, frequentemente, a visibilidade em buscas.

Frequentemente obrigatória

A acessibilidade é um requisito legal em muitas jurisdições e cada vez mais faz parte de processos de contratação.

O panorama completo

Os três pilares da acessibilidade

Estrutura semântica, operabilidade por teclado e conteúdo perceptível. Acerte nisso e a maior parte do trabalho estará feita.

Estrutura

Perceber

HTML semântico e cabeçalhos fornecem às tecnologias assistivas um mapa da página.

Interação

Operar

Tudo funciona com teclado, com foco visível e papéis (roles) corretos.

Conteúdo

Compreender

Alternativas de texto, rótulos e linguagem clara tornam o conteúdo perceptível.

Acessibilidade em resumo

O núcleo de a11y

HTML semântico primeiro

Elementos nativos já trazem papéis, estados e comportamento de teclado nativamente.

Suporte ao teclado

Todo elemento interativo deve ser alcançável e operável sem um mouse.

Foco visível

Os usuários devem ver onde o foco está. Nunca remova outlines sem fornecer um substituto.

Alternativas de texto

Texto alternativo para imagens, legendas para mídia, rótulos para controles.

ARIA quando necessário

Use ARIA para preencher lacunas, não para substituir a semântica nativa.

Movimento e contraste

Respeite a redução de movimento e atenda aos requisitos de contraste.

Uma breve historia

De um detalhe secundário a um requisito legal

  1. 1999

    WCAG 1.0

    As primeiras Diretrizes de Acessibilidade de Conteúdo Web são publicadas.

    99
  2. 2008

    WCAG 2.0

    Os princípios POUR e os critérios de sucesso testáveis são estabelecidos.

    08
  3. 2018

    WCAG 2.1

    Novos critérios cobrem dispositivos móveis, baixa visão e necessidades cognitivas.

    18
  4. 2023

    WCAG 2.2

    Aparência do foco, alternativas de arrastar e tamanho do alvo são adicionados.

    23
  5. Hoje

    Lei e expectativa

    Requisitos de acessibilidade aparecem em legislações e compras governamentais em todo o mundo.

    Hoje

O guia completo

Acessibilidade (a11y): Tudo que voce precisa saber

Por que a acessibilidade é importante

Acessibilidade significa construir para pessoas que utilizam tecnologias assistivas, navegam via teclado, precisam de maior contraste ou preferem a redução de movimento. Cerca de uma em cada seis pessoas vive com alguma deficiência, e quase todo mundo se beneficia da acessibilidade em algum momento — seja por causa de um braço quebrado, uma tela com brilho excessivo ou um trem barulhento.

Além disso, ela é cada vez mais exigida. Legislações e regras de contratação em muitos países fazem referência ao WCAG, portanto, a acessibilidade é um requisito profissional básico, e não apenas um “algo a mais”. A parte tranquilizadora é que a maior parte disso vem de fazer o básico bem feito.

WCAG e POUR

As Web Content Accessibility Guidelines definem o padrão. Seus quatro princípios são:

  • Percebível (Perceivable) — o conteúdo pode ser percebido, por exemplo, com alternativas em texto para imagens e contraste suficiente.
  • Operável (Operable) — tudo funciona via teclado e não exige precisão extrema no apontamento.
  • Compreensível (Understandable) — o conteúdo e o comportamento são previsíveis e claros.
  • Robusto (Robust) — funciona com agentes de usuário e tecnologias assistivas atuais e futuras.

Cada princípio possui critérios de sucesso testáveis nos níveis A, AA e AAA. A maioria das equipes visa o nível AA.

HTML Semântico é a base

A maior parte da acessibilidade vem do uso dos elementos corretos. Elementos nativos já trazem consigo papéis (roles), estados e comportamentos de teclado.

<!-- semantics.html -->
<header>
  <nav aria-label="Main">
    <a href="/">Home</a>
  </nav>
</header>
<main>
  <h1>Dashboard</h1>
  <button type="button" aria-expanded="false">Filters</button>
</main>

Um <button> é focável, responde às teclas Enter e Space, e é anunciado como um botão. Um <div onclick> não possui nenhuma dessas características. É por isso que o guia de HTML Semântico vem antes deste: a semântica é a vitória mais barata e simples em termos de acessibilidade.

Suporte ao teclado

Todo elemento interativo deve ser acessível e operável apenas com o teclado.

  • Use controles nativos, que já possuem foco por padrão.
  • Mantenha a ordem do tab lógica; ela deve seguir a ordem visual.
  • Forneça um skip link para que os usuários possam pular a navegação repetitiva.
  • Nunca prenda o foco dentro de um componente sem oferecer uma saída.
  • Exiba um indicador de foco claro e nunca remova outlines sem substituí-los por algo visível.
<!-- skip.html -->
<a href="#main" class="skip-link">Skip to content</a>
<main id="main" tabindex="-1">...</main>

Gerenciamento de foco

O foco é o cursor do usuário que utiliza teclado. Gerencie-o de forma deliberada:

  • Quando um diálogo abrir, mova o foco para dentro dele e mantenha-o retido ali.
  • Quando ele fechar, retorne o foco para o elemento que o abriu.
  • Em navegações client-side, mova o foco para o novo conteúdo.
  • Após erros de validação, foque no primeiro campo inválido.

Diálogos modernos podem usar o elemento <dialog> com showModal(), que resolve grande parte disso para você.

Alternativas de texto

As imagens precisam de alternativas de texto que transmitam seu propósito dentro do contexto.

  • Imagens informativas recebem uma descrição do que elas transmitem.
  • Imagens decorativas recebem alt="" para que sejam ignoradas.
  • Imagens funcionais, como um ícone dentro de um link, descrevem a ação.
  • Imagens complexas precisam de uma descrição mais detalhada nas proximidades.

O mesmo princípio se aplica a mídias: forneça legendas para vídeos, transcrições para áudios e rótulos (labels) para cada controle de formulário.

ARIA, usado com cautela

O ARIA adiciona semântica que o HTML não consegue expressar, mas é fácil utilizá-lo de forma incorreta. A primeira regra do ARIA é: não use ARIA se um elemento nativo já fizer o trabalho. Um <div role="button"> é pior do que um <button> em quase todos os aspectos.

Quando você realmente precisar dele:

  • aria-label nomeia um elemento que não possui texto visível.
  • aria-labelledby referencia um texto visível que nomeia o elemento.
  • aria-describedby vincula um controle a uma dica ou mensagem de erro.
  • aria-expanded, aria-controls e aria-live descrevem estados e atualizações dinâmicas.

Teste o ARIA com um leitor de tela real; um ARIA incorreto é frequentemente pior do que nenhum.

Cor e contraste

O texto precisa de contraste suficiente em relação ao seu plano de fundo:

  • 4.5:1 para texto normal, 3:1 para texto grande no nível AA.
  • 3:1 para ícones, bordas e indicadores de foco.
  • Nunca use apenas a cor para transmitir significado; adicione texto, ícones ou padrões.

Verifique o contraste com uma ferramenta e teste seu design em escala de cinza para identificar comunicações baseadas apenas em cores.

Movimento e preferências

Respeite as preferências do usuário.

/* motion.css */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Paralaxes exagerados e animações de scroll são os culpados mais comuns. Além disso, evite a reprodução automática de mídias com som e forneça controles para qualquer elemento que se mova.

Testes

Ferramentas automatizadas detectam talvez um terço dos problemas. Combine-as com testes manuais:

  1. Execute o axe ou o Lighthouse para encontrar violações comuns.
  2. Navegue utilizando apenas o teclado, verificando o foco e a ordem de tabulação.
  3. Aplique um zoom de 200% e verifique se nada quebra ou se sobrepõe.
  4. Experimente um leitor de tela: VoiceOver, NVDA ou Narrator.
  5. Verifique o contraste e se há informações transmitidas apenas por cores.
  6. Teste formulários com erros e conteúdos dinâmicos.

O guia da Testing Library mostra como queries acessíveis tornam a acessibilidade parte da sua suíte de testes.

Melhores práticas

  • Comece com HTML semântico antes de adicionar ARIA.
  • Torne tudo operável via teclado com foco visível.
  • Forneça alternativas em texto para todas as mídias significativas.
  • Atenda ao contraste AA e nunca dependa apenas de cores.
  • Gerencie o foco para diálogos, navegação e erros.
  • Respeite a redução de movimento e evite a reprodução automática de mídias.
  • Teste com ferramentas automatizadas e tecnologias assistivas reais.

Erros comuns

  • Usar divs como botões e links.
  • Remover outlines de foco por questões estéticas.
  • Texto alt ausente ou pouco útil.
  • Adicionar ARIA incorretamente e quebrar a semântica nativa.
  • Texto com baixo contraste e estados indicados apenas por cores.
  • Ignorar usuários de teclado em widgets personalizados.

Próximos passos

Acessibilidade é uma prática, não um checklist. Aprofunde-se em Semantic HTML, torne seus formulários utilizáveis com Forms & Validation e integre isso aos seus testes com Testing Library. Depois, escolha uma página, navegue por ela usando apenas o teclado e corrija o que encontrar.

Descrevendo uma imagem

O texto alternativo transmite o propósito da imagem no contexto. Imagens decorativas usam um alt vazio para que os leitores de tela as ignorem.

Preferir
<img src="chart.png"
     alt="Sales rose 20% from January to June" />

<img src="divider.svg" alt="" />
Evitar
<img src="chart.png" />
<img src="divider.svg"
     alt="decorative divider image" />

Controles interativos

Elementos nativos incluem suporte ao teclado, foco e papéis. Uma div estilizada deve recriar tudo isso e geralmente não o faz.

Preferir
<button type="button">Close</button>
<a href="/docs">Docs</a>
Evitar
<div role="button" tabindex="0"
     onclick="close()">Close</div>

Perguntas frequentes

Perguntas frequentes

Keep learning

Related topics from the roadmap.

$ comecar a aprender

Pronto para aprender Accessibility (a11y)?

Nosso tutorial interativo te guia por Accessibility (a11y) passo a passo — com quizzes e codigo real que voce pode executar no navegador.