0Pricing
React Academy · Aula

Acessibilidade para componentes de preenchimento automático

Aplique aria-autocomplete, aria-expanded, role=listbox e role=option para tornar o componente compatível com leitores de tela.

Acessibilidade para componentes de preenchimento automático é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

O padrão ARIA de caixa de combinação

O padrão de caixa de combinação WAI-ARIA define um conjunto específico de funções e propriedades para componentes de preenchimento automático. Uma caixa de combinação é um elemento de entrada associado a uma janela emergente de lista. O padrão garante que os leitores de tela anunciem corretamente o comportamento interativo, as opções disponíveis e a seleção atual para usuários que não conseguem ver a interface visual.

role=combobox no contêiner

Envolva a entrada em uma div com role="combobox". Isso informa à tecnologia assistiva que a entrada tem uma lista emergente associada. Defina aria-expanded={isOpen} neste contêiner para informar aos leitores de tela se a lista de sugestões está visível ou oculta no momento.

Atributos ARIA da entrada

O próprio elemento de entrada deve ter: aria-autocomplete="list" (a janela emergente contém uma lista de sugestões), aria-haspopup="listbox" (clicar ou digitar abre uma lista), aria-expanded={isOpen} e aria-controls="suggestion-list-id", apontando para o id do elemento da lista suspensa.

aria-activedescendant

aria-activedescendant na entrada aponta para o id da opção atualmente destacada. Quando selectedIndex for 0, defina aria-activedescendant="option-0". Os leitores de tela usam isso para anunciar qual item está ativo sem mover o foco real da entrada. Quando nenhum item estiver selecionado, remova o atributo ou defina-o como uma cadeia vazia.

A lista de sugestões: role=listbox

O elemento contêiner da lista suspensa deve ter role="listbox" e um id exclusivo que corresponda a aria-controls da entrada. Essa função informa à árvore de acessibilidade que o elemento é uma lista de opções selecionáveis. A lista recebe foco indiretamente por meio de aria-activedescendant na entrada.

Cada sugestão: role=option

Cada item de sugestão deve ter role="option" e um id exclusivo, como option-0, option-1 etc. Adicione aria-selected={index === selectedIndex} para indicar qual item está destacado no momento. Os leitores de tela anunciam tanto o conteúdo da opção quanto se ela está selecionada quando o usuário navega com as teclas de seta.

Anúncio do leitor de tela

Quando o usuário pressiona ArrowDown e aria-activedescendant é atualizado para option-1, o VoiceOver anuncia algo como "ganchos do React, 2 de 5". O leitor de tela lê automaticamente o texto da opção e sua posição na lista a partir da marcação ARIA. Não são necessárias regiões dinâmicas adicionais para a navegação pelo teclado.

Testando com VoiceOver e NVDA

Faça um teste com o VoiceOver no macOS (Cmd+F5 para alternar) e com o NVDA no Windows (download gratuito). Navegue até a entrada e comece a digitar. Verifique se o leitor de tela anuncia a função de caixa de combinação, o número de resultados encontrados e cada opção conforme você navega com as teclas de seta. Compare o comportamento com os exemplos do Guia de práticas de criação do WAI-ARIA.

Região dinâmica para carregamento assíncrono

Quando as sugestões forem carregadas de forma assíncrona, adicione uma div visualmente oculta com aria-live="polite" e aria-atomic="true". Atualize seu conteúdo textual quando o carregamento terminar: "5 resultados encontrados" ou "Nenhum resultado encontrado". O leitor de tela anuncia essa mensagem depois que a fala atual termina, mantendo os usuários informados sem interrompê-los.

Guia de práticas de criação do WAI-ARIA

O Guia de práticas de criação do WAI-ARIA (APG), disponível em w3.org/WAI/ARIA/apg, contém uma página dedicada ao padrão de caixa de combinação, com exemplos funcionais de código e especificações detalhadas de interação pelo teclado. Consulte sempre o APG ao implementar componentes interativos, como preenchimento automático, caixas de diálogo ou abas, para garantir conformidade total com os requisitos de acessibilidade.

aria-label e espaço reservado

Forneça um aria-label na entrada se não existir um elemento de rótulo visível: aria-label="Search suggestions". Não dependa somente de placeholder para os rótulos: os espaços reservados desaparecem quando o usuário digita e não são anunciados de maneira consistente por todos os leitores de tela. Um elemento label visível com htmlFor é sempre a melhor opção.

Finalidade de aria-activedescendant

Qual é a finalidade do atributo aria-activedescendant em uma entrada de preenchimento automático?

Recapitulação da lição: acessibilidade no preenchimento automático

Use role="combobox" no contêiner, aria-autocomplete="list" na entrada, além de aria-expanded, aria-controls e aria-activedescendant para conectar a entrada à lista de sugestões. Cada opção precisa de role="option", um id exclusivo e aria-selected. Adicione uma região aria-live para as contagens de resultados assíncronos.

Perguntas Frequentes

A aula “Acessibilidade para componentes de preenchimento automático” é grátis?

Sim — o texto completo de “Acessibilidade para componentes de preenchimento automático” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Acessibilidade para componentes de preenchimento automático”?

Aplique aria-autocomplete, aria-expanded, role=listbox e role=option para tornar o componente compatível com leitores de tela. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Acessibilidade para componentes de preenchimento automático”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Entrada controlada com lista de sugestões
  2. Navegação pelo teclado em listas de sugestões
  3. Sugestões assíncronas com debounce
  4. Acessibilidade para componentes de preenchimento automático
← Voltar para React Academy