Como indicar foco de teclado

Todo controle operável por teclado precisa de um foco visível, contrastante e não encoberto. Veja como indicar esse estado em botões e links.

Wireframe 2D com um controle neutro e outro com contorno azul de foco de teclado.
Nível de impácto
Alto
Status
Recomendado
Nível de evidênica
Forte evidência

Contexto

Em uma interface operada por teclado, o foco mostra qual elemento receberá a próxima ação. Ao pressionar Tab, a pessoa precisa identificar visualmente onde está e saber qual controle será acionado por Enter ou Espaço.

O navegador costuma fornecer um indicador nativo, mas estilos que removem o outline, contrastes baixos e barras fixas que encobrem o controle podem tornar o foco imperceptível. Este padrão trata da indicação visual e da visibilidade do foco. Ele não substitui a ordem lógica de navegação, a semântica ou a operação completa por teclado.

Mostre sempre qual botão, link ou controle recebeu foco de teclado.

Preserve o indicador nativo quando ele for visível e suficiente.

Ao personalizar o foco, use um contorno claro ao redor do controle inteiro, sem depender apenas de uma mudança sutil de fundo.

Garanta contraste entre o indicador e as cores adjacentes quando o estilo for definido pelo site.

Mantenha o controle visível quando o foco avançar, evitando cabeçalhos, rodapés e painéis fixos que o encubram.

Aplique o estado a todos os controles operáveis, incluindo links, botões, campos, menus e componentes personalizados.

Teste com Tab, Shift + Tab, Enter e Espaço, em diferentes tamanhos de tela e níveis de zoom.

Página do componente Button do Design System GOV.BR mostrando variações de botões, incluindo estados com contorno.
Exemplo real: o componente Button do GOV.BR documenta a navegação por Tab e recomenda manter o estado de foco habilitado para que o elemento focado exiba seu indicador visual. A captura mostra o estado documentado no próprio Design System. Fonte: https://www.gov.br/ds/components/button

Porque isso importa?

Sem um indicador de foco, uma pessoa que navega pelo teclado pode não saber onde está nem qual elemento será acionado. Isso aumenta a desorientação, torna tarefas mais lentas e pode impedir a operação de uma interface aparentemente funcional.

O foco também beneficia pessoas com limitações de atenção, memória ou processos executivos, pois mantém visível o ponto atual da interação. O indicador não precisa ter uma forma única, mas precisa ser perceptível, persistente enquanto o controle estiver focado e distinguível do estado normal.

  • Links de navegação e links de conteúdo.
  • Botões de ação e botões apenas com ícone.
  • Campos, caixas de seleção, opções e interruptores.
  • Menus, listas suspensas, abas e outros controles interativos.
  • Componentes personalizados que recebem foco programático.
  • Interfaces com teclado, leitor de tela, comando de voz ou switch.
  • Remover o outline sem criar um indicador equivalente.
  • Usar apenas hover para comunicar a posição atual.
  • Trocar somente a cor de fundo por uma variação quase imperceptível.
  • Esconder o foco atrás de cabeçalhos, rodapés ou painéis fixos.
  • Aplicar foco apenas em botões e esquecer links ou controles personalizados.
Documentação do Carbon mostrando um controle com borda azul de foco no tema claro e borda clara no tema escuro.
Exemplo real: o Carbon aplica uma borda de foco ao controle nos temas claro e escuro e explica que o estado deve existir em todos os elementos interativos, com contraste de 3:1. A captura relaciona a decisão visual ao uso de tokens de foco. Fonte: https://carbondesignsystem.com/elements/color/overview/

Recomendações

Faça

Práticas recomendadas
  • Preserve o foco nativo.
  • Use contorno claro.
  • Garanta contraste suficiente.
  • Mantenha o foco visível.
  • Teste a sequência com teclado.
Wireframe 2D mostrando um indicador de foco visível em um controle.
Exemplo correto: o contorno externo torna visível qual controle recebeu foco, sem depender de texto ou cor isolada.

Evite

Práticas a evitar
  • Remover o outline.
  • Depender só de hover.
  • Usar cor quase invisível.
  • Encobrir o controle focado.
  • Esquecer links e componentes customizados.
Wireframe 2D mostrando um controle sem indicador de foco visível e um símbolo de erro.
Exemplo incorreto: a mudança interna é fraca e não identifica o controle focado; a pessoa pode perder sua posição ao navegar com teclado.

Acessibilidade

O critério WCAG 2.2 2.4.7, nível AA, exige que interfaces operáveis por teclado tenham pelo menos um modo em que o indicador de foco seja visível. O critério 1.4.11, também nível AA, exige contraste mínimo de 3:1 para o indicador estilizado pelo site contra as cores adjacentes. O critério 2.4.11, nível AA, exige que o componente focado não fique totalmente encoberto por conteúdo criado pelo autor.

O critério 2.4.13, nível AAA, fornece uma referência mais rigorosa para tamanho e mudança de contraste do indicador. Ele não deve ser apresentado como requisito AA, mas pode orientar um padrão visual mais robusto. A cor não deve ser o único sinal: combine contorno, espessura, posição ou outra mudança estrutural perceptível.

Checklist

  • O foco aparece em todos os elementos operáveis por teclado?
  • O indicador é visível sem depender de hover?
  • O indicador se distingue claramente do estado normal?
  • O estilo personalizado mantém contraste suficiente?
  • O foco continua visível em fundos e estados diferentes?
  • O foco não fica encoberto por elementos fixos?
  • Links, botões e componentes personalizados foram testados?
  • A sequência funciona com Tab e Shift + Tab?
  • As ações funcionam com Enter ou Espaço quando aplicável?
  • O teste foi feito com zoom, teclado e tecnologia assistiva?

Referências

W3C WAI: WCAG 2.2, critério 2.4.7, Focus Visible. Define a exigência AA de um modo de operação em que o foco de teclado seja visível e apresenta técnicas como preservar o indicador do agente de usuário e usar :focus-visible. Consultar o critério Focus Visible.

W3C WAI: WCAG 2.2, critério 1.4.11, Non-text Contrast. Explica que o indicador de foco estilizado pelo site precisa ter contraste mínimo de 3:1 contra as cores adjacentes. Consultar o critério Non-text Contrast.

W3C WAI: WCAG 2.2, critério 2.4.11, Focus Not Obscured. Exige que o componente com foco de teclado não fique totalmente encoberto por conteúdo criado pelo site e apresenta riscos de cabeçalhos e rodapés fixos. Consultar o critério Focus Not Obscured.

W3C WAI: WCAG 2.2, critério 2.4.13, Focus Appearance. É um critério AAA que oferece orientação mais rigorosa para tamanho e mudança de contraste do indicador. Consultar a orientação Focus Appearance.

Padrão Digital de Governo: componente Button. Recomenda manter o estado de foco habilitado e garantir acesso por Tab, Enter e Espaço. É uma implementação governamental contextual, não uma prova universal independente. Consultar o componente Button do GOV.BR.

IBM Carbon Design System: Focus. Documenta o foco como estado de todos os elementos interativos, normalmente com borda de 2 px e contraste de 3:1. É uma referência de implementação de produto, não um requisito normativo isolado. Consultar a orientação de foco do Carbon.

Veja também

Esta recomendação foi útil para você?