Voltar para Artigos
Front-end5 min de leitura

Acessibilidade na Prática (A11y): Desenvolvendo para Todos

Deixe de lado o mito de que Acessibilidade é apenas atributo 'alt' em imagens. Aprenda os fundamentos do ARIA e teclado para criar interfaces inclusivas no React.

12 de agosto de 2026

Acessibilidade na Web, frequentemente referida como A11y (a letra A seguida de 11 letras até o Y), trata de garantir que as aplicações sejam utilizáveis por qualquer pessoa, independente de deficiências visuais, motoras ou cognitivas.

É um requisito ético e muitas vezes legal. No entanto, é muito comum construirmos botões bonitos e modais incríveis no React que se tornam 'armadilhas' para quem navega por teclado ou usa leitores de tela.

O Problema das Tags Semânticas

Se você usa uma <div> e atrela um evento onClick a ela para transformá-la num botão, o navegador e os leitores de tela não sabem que aquilo é interagível.

src/components/BadButton.tsx
// PÉSSIMO: Um leitor de tela vai pular isso e não dá pra focar com a tecla 'TAB'
<div onClick={submitForm} className="bg-blue-500 p-2">
  Enviar Formulário
</div>

// PERFEITO: É interpretado corretamente e ganha foco com TAB nativamente
<button type="button" onClick={submitForm} className="bg-blue-500 p-2">
  Enviar Formulário
</button>

Atributos ARIA (Accessible Rich Internet Applications)

Muitas vezes, a interface exige componentes complexos que não têm uma tag HTML correspondente. O ARIA nos permite 'explicar' o componente para o leitor de tela.

src/components/CustomDropdown.tsx
export function Dropdown({ isOpen, toggleMenu }) {
  return (
    <div className="relative">
      <button 
        onClick={toggleMenu}
        aria-expanded={isOpen}
        aria-haspopup="true"
      >
        Configurações
      </button>

      {isOpen && (
        <ul role="menu">
          <li role="menuitem">Perfil</li>
          <li role="menuitem">Sair</li>
        </ul>
      )}
    </div>
  );
}

Neste exemplo, o leitor de tela irá ditar: _'Configurações, botão, recolhido. Possui submenu.'_. Ao clicar, ele anunciará _'Configurações, expandido'_.

Gerenciando Foco em Modais

Quando um usuário de teclado abre um Modal, o comportamento correto é aprisionar o foco (Focus Trap) dentro do Modal. Se ele pressionar 'TAB', o foco deve rodar entre os botões do Modal, mas NUNCA voltar para os botões do site no fundo que está escurecido.

Use bibliotecas maduras, como o Radix UI ou o componente de Modal do Framer Motion, que já tratam o 'Focus Trap', o retorno do foco ao botão original ao fechar e permitem o uso da tecla ESC para dispensar a janela sem esforço nenhum de programação da sua parte.

Conclusão

Programar com acessibilidade em mente desde o início requer quase nenhum esforço adicional (apenas escolha as tags corretas). O resultado é um produto altamente inclusivo que abre as portas para 100% dos seus usuários em potencial.