Estados de foco acessíveis: projetando o foco visível do teclado
Como projetar o foco visível do teclado que atenda ao WCAG 2.2: o que 2.4.7 e 2.4.13 exigem, como :focus-visible funciona e dicas de design para anéis de foco.
Ponto principal
Cada elemento interativo precisa de um indicador de foco claramente visível para usuários de teclado; WCAG 2.2 requer nível AA (2.4.7). Para um indicador forte, busque a orientação AAA do WCAG (2.4.13): pelo menos a área de um contorno de 2 pixels CSS ao redor do elemento com contraste de 3:1 entre os estados focado e não focado. Use :focus-visible para mostrar anéis para usuários de teclado sem mostrá-los a cada clique do mouse.
Por que os estados de foco são importantes
Pessoas que usam teclado, dispositivo móvel ou ampliador de tela movem-se pela página, um elemento por vez. O indicador de foco é a única maneira de saberem onde estão. Remover o contorno do navegador sem substituí-lo é uma das falhas de acessibilidade mais comuns.
O que WCAG 2.2 requer
O critério de sucesso 2.4.7 Foco Visível (nível AA) requer que qualquer interface operável por teclado tenha um modo onde o indicador de foco esteja visível. WCAG 2.2 adicionou 2.4.13 Focus Appearance (nível AAA), que descreve um indicador forte: pelo menos tão grande quanto a área de um perímetro de 2 pixels de espessura CSS do componente, com uma taxa de contraste de pelo menos 3:1 entre os estados focado e não focado.
:foco-visível
MDN explica que :focus-visible se aplica quando um elemento tem foco e o navegador decide, usando heurística, que o foco deve ser mostrado, normalmente para uso do teclado. Isso permite mostrar anéis de foco fortes para usuários de teclado, sem mostrá-los sempre que alguém clica em um botão com o mouse. Use-o em vez de remover contornos.
Projetando o anel
Orientação prática:
- Use um contorno ou anel com deslocamento para que não se misture ao elemento.
- Verifique o contraste em cada plano de fundo em que o elemento pode aparecer; um anel bicolor ajuda.
- Mantenha-o consistente entre os componentes, definidos como um token no seu sistema de design.
- Nunca confie apenas em uma mudança sutil de cor.
- Certifique-se de que o elemento em foco não esteja oculto atrás de cabeçalhos fixos.
Foco e movimento
Um anel de foco pode aparecer com uma transição muito curta, mas deve parecer instantâneo. Evite animações que atrasem o anel ou movam o elemento e, para componentes personalizados desenhados em tela, certifique-se de que ainda haja um elemento real focável na página para que os usuários do teclado possam acessá-lo.
Princípios-chave para lembrar
- O foco visível é necessário em WCAG AA (2.4.7)
- 2.4.13 (AAA): área de perímetro de 2px e alteração de contraste de 3:1
- Use :focus-visible em vez de remover contornos
- Defina o anel de foco como um token de design
- A IU renderizada em tela precisa de elementos reais focalizáveis
Perguntas frequentes
Fontes
- Understanding SC 2.4.7: Focus Visible — W3C WAI
- Understanding SC 2.4.13: Focus Appearance — W3C WAI
- :focus-visible — Documentos da Web MDN