Quand (ne pas) utiliser l'attribut tabindex en HTML
Publié le
L'attribut tabindex est un outil puissant qui permet
de gérer l'ordre de navigation au clavier dans une page web. Il est essentiel pour
garantir que les utilisateurs naviguant avec le clavier puissent accéder aux éléments
interactifs de manière logique. Cependant, une utilisation abusive de cet attribut peut
compromettre l'accessibilité. Cet article explique comment et quand utiliser
tabindex, ainsi que les situations où il ne faut pas
l'employer.
Comprendre l'attribut tabindex
L'attribut tabindex contrôle l'ordre dans lequel les
éléments d'une page reçoivent le focus lorsqu'un utilisateur navigue avec la touche
Tab. Il peut être utilisé sur tout élément HTML qui est naturellement
focusable (comme les liens ou les boutons), mais aussi sur des éléments qui ne le sont
pas, comme les divs ou les spans.
Exemple :
Ajouter un tabindex à un div pour qu'il soit
focusable :
<div tabindex="0">Je peux recevoir le focus !</div>
Quand utiliser tabindex
Utilisez tabindex lorsque vous souhaitez personnaliser
l'ordre de navigation au clavier pour améliorer l'expérience utilisateur, notamment dans
les situations suivantes :
- Pour rendre un élément non interactif focusable (par exemple, un div qui agit comme un bouton).
- Pour gérer l'ordre de focus dans un formulaire complexe où l'ordre naturel ne serait pas logique.
Quand ne pas utiliser tabindex
Il est crucial de ne pas abuser de tabindex dans les
cas suivants, car cela peut nuire à l'accessibilité :
1. Évitez de modifier l'ordre naturel de navigation
L'utilisation excessive de tabindex positif
(c'est-à-dire un nombre supérieur à 0) peut créer un ordre de navigation non intuitif et
déroutant. Il est souvent préférable de laisser le navigateur gérer l'ordre naturel des
éléments.
Mauvais exemple :
Changer l'ordre naturel de tabulation :
<input type="text" tabindex="3">
<input type="text" tabindex="1">
<input type="text" tabindex="2">
2. Ne pas ajouter tabindex aux éléments interactifs
par défaut
Les éléments comme les liens (<a>), les boutons
(<button>) et les champs de formulaire sont
naturellement focusables. Ajouter un tabindex à ces
éléments est redondant et peut créer des conflits dans l'ordre de navigation.
3. Évitez d'ajouter tabindex à des éléments non
interactifs sans raison valable
Ne pas rendre des éléments comme des <div> ou
des <span> focusables à moins qu'ils aient une
fonction claire (par exemple, si un <div> simule
un bouton ou un lien).
Utiliser tabindex="-1" pour les éléments hors séquence
L'attribut tabindex="-1" est utile pour les éléments
qui doivent pouvoir être focusés par des scripts (via
focus()) mais pas via la navigation au clavier. Cela
permet de rendre certains éléments focusables sans les inclure dans l'ordre de
tabulation.
Exemple :
Focuser un élément par programmation sans qu'il soit dans l'ordre de tabulation :
<div tabindex="-1">Focusé par script seulement</div>
Conclusion
Bien que tabindex soit un outil puissant pour
contrôler l'ordre de navigation, il doit être utilisé avec précaution. Dans la plupart
des cas, il est préférable de respecter l'ordre naturel des éléments et de ne pas
altérer la navigation au clavier sauf si cela améliore clairement l'expérience
utilisateur. Utilisez des tabindex positifs avec
parcimonie et veillez à tester la navigation au clavier pour garantir une accessibilité
optimale.