Attribut HTML universel : tabindex
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'attribut universel tabindex permet aux développeur·euse·s de créer des éléments HTML sélectionnables, de permettre ou d'empêcher leur sélection séquentielle (généralement avec la touche Tab, d'où le nom) et de déterminer leur ordre relatif pour la navigation séquentielle.
Exemple interactif
<p>
Cliquez n'importe où dans ce panneau, puis essayez de naviguer dans les
éléments à l'aide de la touche <kbd>Tab</kbd>.
</p>
<label>Premier dans l'ordre de tabulation :<input type="text" /></label>
<div tabindex="0">Peut avoir la sélection grâce à tabindex.</div>
<div>Pas de sélection : pas de tabindex.</div>
<label>Troisième dans l'ordre de tabulation :<input type="text" /></label>
p {
font-style: italic;
font-weight: bold;
}
div,
label {
display: block;
letter-spacing: 0.5px;
margin-bottom: 1rem;
}
div:focus {
font-weight: bold;
}
Il accepte un entier comme valeur, avec des résultats différents selon la valeur de l'entier :
Note :
Si un élément HTML est affiché et possède l'attribut tabindex avec une valeur entière valide, l'élément peut être sélectionné avec JavaScript (en appelant la méthode focus()) ou visuellement en cliquant avec la souris. La valeur particulière de tabindex contrôle si l'élément est tabbable (c'est-à-dire accessible par navigation séquentielle au clavier, généralement avec la touche Tab).
-
Une valeur négative (la valeur négative exacte n'a pas d'importance, généralement
tabindex="-1") signifie que l'élément n'est pas accessible par navigation séquentielle au clavier.Note :
tabindex="-1"peut être utile pour les éléments qui ne doivent pas être accessibles directement avec la touche Tab, mais qui doivent recevoir la sélection au clavier. Des exemples incluent une fenêtre modale hors écran qui doit être sélectionnée lorsqu'elle devient visible, ou un message d'erreur de soumission de formulaire qui doit être immédiatement sélectionné lors de la soumission d'un formulaire erroné. -
tabindex="0"signifie que l'élément doit être accessible dans la navigation séquentielle au clavier, après toute valeur positive detabindex. L'ordre de navigation de sélection de ces éléments est défini par leur ordre dans le code source du document. -
Une valeur positive signifie que l'élément doit être accessible dans la navigation séquentielle au clavier, avec son ordre défini par la valeur du nombre. Ainsi,
tabindex="4"est sélectionné avanttabindex="5"ettabindex="0", mais aprèstabindex="3". Si plusieurs éléments partagent la même valeur positive detabindex, leur ordre relatif entre eux suit leur position dans le code source du document. La valeur maximale pourtabindexest 32767. -
Si l'attribut
tabindexest inclus sans valeur définie, le fait que l'élément soit sélectionnable est déterminé par l'agent utilisateur.Attention : Il est recommandé d'utiliser uniquement les valeurs
0et-1pourtabindex. Évitez d'utiliser des valeurs detabindexsupérieures à0et des propriétés CSS qui peuvent changer l'ordre des éléments HTML sélectionnables (Ordre des éléments flexibles). Cela rend difficile la navigation et l'utilisation du contenu de la page pour les personnes qui dépendent du clavier ou des technologies d'assistance. Il vaut mieux écrire le document avec les éléments dans une séquence logique.
Certains éléments HTML sélectionnables ont une valeur par défaut de tabindex à 0 définie en interne par l'agent utilisateur. Ces éléments sont un <a> ou <area> avec l'attribut href, <button>, <frame>
Obsolète
, <iframe>, <input>, <object>, <select>, <textarea>, et l'élément SVG <a>, ou un élément <summary> qui fournit un résumé pour un élément <details>. Les développeur·euse·s ne doivent pas ajouter l'attribut tabindex à ces éléments sauf si cela modifie le comportement par défaut (par exemple, inclure une valeur négative retirera l'élément de l'ordre de navigation de sélection).
Attention :
Il ne faut pas utiliser l'attribut tabindex sur l'élément <dialog>.
Problèmes d'accessibilité
Il faut éviter d'utiliser l'attribut tabindex avec du contenu non-interactif si on souhaite uniquement rendre cet élément accessible au clavier (par exemple en voulant utiliser un élément <div> plutôt qu'un élément <button>).
Les composants rendus interactifs par cette méthode ne feront pas partie de l'arbre d'accessibilité et ne pourront pas être analysés par les technologies d'assistance. Le contenu devrait être décrit sémantiquement avec des éléments interactifs (<a>, <button>, <details>, <input>, <select>, <textarea>, etc.). En effet, ces éléments disposent nativement de rôles et d'états qui peuvent être utilisées par les API d'accessibilité (il faut sinon les gérer via ARIA).
Spécifications
| Specification |
|---|
| HTML> # attr-tabindex> |
Compatibilité des navigateurs
Voir aussi
- Tous les attributs universels
- La propriété
HTMLElement.tabIndexqui reflète cet attribut - Problèmes d'accessibilité avec
tabindex: voir Ne pas utiliser tabindex supérieur à 0 (angl.) par Adrian Roselli - L'entrée de glossaire Ordre de lecture