RGAA 10.7Pour chaque élément recevant le focus, la prise de focus est-elle visible ?

Indicateur de focus absent

Le problème

Un indicateur de focus absent signifie que lorsqu'un utilisateur parcourt les éléments interactifs d'une page au clavier -- liens, boutons, champs de formulaire, contrôles personnalisés -- aucun contour ou surbrillance visible n'indique quel élément détient actuellement le focus clavier. Le critère RGAA 10.7 (correspondant au WCAG 2.4.7, niveau AA) exige que l'indicateur de focus clavier soit visible sur tous les éléments interactifs.

Ce problème est massivement causé par des réinitialisations CSS et des choix de design qui suppriment le contour de focus par défaut du navigateur. La tristement célèbre règle `outline: none` ou `outline: 0`, souvent appliquée globalement via `*:focus { outline: none; }`, supprime le contour bleu ou pointillé que les navigateurs fournissent par défaut. Les designers le retirent parce qu'ils le jugent visuellement disgracieux, mais sans fournir un style de focus alternatif, ils rendent le site inutilisable pour les navigateurs au clavier.

Les frameworks CSS modernes et les feuilles de style de réinitialisation incluent parfois cet anti-pattern par défaut. Même lorsqu'un style de focus personnalisé est ajouté, il peut avoir un contraste insuffisant par rapport à l'arrière-plan, être trop subtil pour être remarqué (un changement de bordure de 1px à peine visible), ou n'être appliqué qu'à certains éléments tandis que d'autres restent invisibles lorsqu'ils reçoivent le focus.

Impact sur les utilisateurs

Pour les utilisateurs qui naviguent exclusivement au clavier -- y compris les personnes ayant des handicaps moteurs, les utilisateurs avancés et toute personne temporairement incapable d'utiliser une souris -- un indicateur de focus absent revient à naviguer sur un site web les yeux bandés. Ils appuient sur Tab et n'ont aucune idée de leur position sur la page. Ils ne peuvent pas voir quel lien ils vont activer, dans quel champ de formulaire ils saisissent du texte, ni quel bouton ils vont presser.

Cela entraîne des clics erronés, des soumissions de formulaire accidentelles et une expérience profondément frustrante. Les utilisateurs finissent souvent par appuyer sur Tab de manière répétée tout en guettant des changements visuels subtils, ou abandonnent le site.

Les utilisateurs de lecteurs d'écran sont un peu moins affectés car leur technologie d'assistance annonce l'élément focalisé, mais les utilisateurs voyants au clavier ne reçoivent aucun retour de ce type. On estime que 15 à 20% des utilisateurs du web s'appuient sur la navigation au clavier au moins une partie du temps, ce qui en fait un problème à fort impact touchant une large audience.

Votre site a-t-il ce problème ?

106 critères RGAA analysés en 5 minutes par notre IA.

Testez votre site gratuitement

Exemple de code

Avant (non conforme)
/* Réinitialisation CSS qui supprime le focus */
*:focus {
  outline: none;
}

/* Ou via un reset de framework */
button:focus,
a:focus,
input:focus {
  outline: 0;
  box-shadow: none;
}
Après (conforme)
/* Focus visible uniquement pour les utilisateurs clavier */
*:focus-visible {
  outline: 2px solid #1a56db;
  outline-offset: 2px;
  border-radius: 2px;
}

/* Supprimer le contour pour les clics souris */
*:focus:not(:focus-visible) {
  outline: none;
}

/* Focus à contraste élevé pour les fonds sombres */
.dark *:focus-visible {
  outline-color: #93c5fd;
}

Comment Scrutia détecte ce problème

Scrutia analyse le CSS calculé de chaque élément focalisable de vos pages pour détecter les indicateurs de focus manquants ou invisibles. Il vérifie les règles `outline: none` sans styles de remplacement, évalue le ratio de contraste des indicateurs de focus personnalisés par rapport à leur arrière-plan, et signale les éléments où l'état de focus ne produit aucun changement visible. Chaque constatation inclut le sélecteur CSS et un style de focus suggéré.

Questions fréquentes

Pourquoi les designers suppriment-ils le contour de focus ?
Le contour de focus par défaut du navigateur (un anneau bleu ou pointillé) est souvent considéré comme visuellement incohérent avec le design d'un site. Les designers le suppriment pour des raisons esthétiques, mais l'approche correcte est de le remplacer par un style de focus personnalisé qui s'intègre au système de design tout en restant clairement visible.
Quelle est la différence entre :focus et :focus-visible ?
:focus s'applique chaque fois qu'un élément reçoit le focus, que ce soit par clic souris ou navigation clavier. :focus-visible ne s'applique que lorsque le navigateur détermine que le focus doit être visible -- typiquement lors de la navigation clavier. Utiliser :focus-visible permet d'afficher les indicateurs de focus pour les utilisateurs clavier tout en les masquant pour les clics souris.
Qu'est-ce qui fait un bon indicateur de focus ?
Un bon indicateur de focus a un ratio de contraste d'au moins 3:1 par rapport à l'arrière-plan environnant, fait au moins 2px d'épaisseur et entoure l'élément (plutôt que de ne changer qu'une bordure). Le critère WCAG 2.2 renforcé (2.4.13) fournit des indications encore plus spécifiques sur la taille et le contraste de l'indicateur de focus.
Tailwind CSS supprime-t-il le contour de focus ?
Le Preflight de Tailwind (réinitialisation CSS) réinitialise bien le contour de focus par défaut du navigateur, mais il fournit des classes utilitaires de focus comme focus:ring-2 et focus-visible:outline-2 qui facilitent l'ajout de styles de focus accessibles. L'essentiel est d'utiliser effectivement ces classes sur vos éléments interactifs.

Votre site a-t-il ce problème ?

Scrutia audite votre site sur 106 critères RGAA en 5 minutes. Navigation clavier, composants ARIA, focus visible, contrastes, et bien plus.

Lancer un audit gratuit