Onglets
Sommaire
Principe
Les onglets sont des modules dynamiques qui permettent d’optimiser l’affichage du contenu d’une page dans un espace réduit grâce à un système d’étiquettes contrôlant l’affichage de panneaux.
Ils se présentent généralement sous la forme d’une liste d’items accolés qui permettent d’afficher du contenu relatif à l’onglet sélectionné. Un seul onglet peut être activé à la fois.
Cette fiche s’appuie sur le motif de conception « Tabs with Automatic Activation » détaillé dans les ARIA Authoring Practices Guide (APG) du W3C.
Socle HTML
Rôles, états et propriétés ARIA
- L’attribut
role="tablist"
doit être appliqué sur l’élément qui englobe les onglets.Dans le cas où les onglets sont orientés verticalement, l’attribut
aria-orientation="vertical"
doit également être appliqué sur cet élément. - L’attribut
role="tab"
doit être appliqué sur chaque onglet. - L’attribut
role="tabpanel"
doit être appliqué sur chaque panneau. - L’attribut
tabindex="0"
doit être appliqué sur chaque panneau. - Chaque onglet doit être associé à son panneau via l’attribut
aria-controls
:- Chaque panneau doit posséder un attribut
id
renseigné avec une valeur unique. - Chaque onglet doit posséder un attribut
aria-controls
renseigné avec la valeur de l’attributid
de son panneau associé.
- Chaque panneau doit posséder un attribut
- Chaque panneau doit être rattaché à l’onglet qui le contrôle via l’attribut
aria-labelledby
:- Chaque onglet doit posséder un attribut
id
renseigné avec une valeur unique. - Chaque panneau doit posséder un attribut
aria-labelledby
renseigné avec la valeur de l’attributid
de l’onglet qui le contrôle.
- Chaque onglet doit posséder un attribut
- L’attribut
aria-selected
doit être appliqué sur chaque onglet. Sa valeur doit être renseignée dynamiquement en fonction de l’état de l’onglet associé :aria-selected="true"
sur l’onglet sélectionné.aria-selected="false"
sur les autres onglets, non sélectionnés.
- L’attribut
tabindex="-1"
doit être appliqué sur chaque onglet non sélectionné. Il doit être renseigné dynamiquement en fonction de l’état de l’onglet associé.
Interactions au clavier
Tab et Maj + Tab
Lorsque l’on accède en tabulant aux onglets, le focus est positionné au niveau de l’onglet sélectionné dans le groupe d’onglets. Lorsque le focus est positionné sur un onglet, la prochaine tabulation permet de quitter le groupe d’onglets et de se positionner sur le panneau affiché.
Flèche gauche
Lorsque le focus est positionné sur un onglet, déplace le focus clavier vers le précédent onglet du groupe et sélectionne cet onglet. Si le focus clavier est positionné au niveau du premier onglet du groupe au moment où la touche est pressée, le focus clavier est déplacé au niveau du dernier onglet du groupe et cet onglet est sélectionné.
Dans le cas où les onglets sont orientés verticalement, prévoir également ce comportement pour la touche Flèche haut.
Flèche droite
Lorsque le focus est positionné sur un onglet, déplace le focus clavier vers l’onglet suivant dans le groupe et sélectionne cet onglet. Si le focus clavier est positionné au niveau du dernier onglet du groupe au moment où la touche est pressée, le focus clavier est déplacé au niveau du premier onglet du groupe et cet onglet est sélectionné.
Dans le cas où les onglets sont orientés verticalement, prévoir également ce comportement pour la touche Flèche bas.
Remarque
Les panneaux non affichés à l’écran doivent être masqués avec display: none
et/ou visibility: hidden
.
10 commentaires
-
Ce commentaire a été publié il y a plus de 2 ans. Il se peut que son contenu ne soit plus d'actualité.
Bonjour ,
si on utilise le système d’onglet dans un menu de navigation faut il mettre les aria des onglets dans ce cas ou pas ?
-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour, j’ai utilisé la librairie jQuery UI à mon travail afin de rendre des onglets accessibles, celle-ci enrichie bien le contenu html avec les bons attributs comme ceux spécifiés sur cette page.
Toutefois testant la navigation audio avec NVDA j’ai remarqué que la lecture ne rentrait pas à l’intérieur des panneaux, j’ai pourtant testé diverses combinaisons de touches liées à la configuration de NVDA.
Y aurait-il une subtilité à connaitre ?
Cela aurait-il un lien avec le mode formulaire de NVDA ?-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour,
Nous vous remercions pour l’intérêt que vous portez au projet AcceDe Web.
Toutefois, cet espace de commentaires est dédié aux échanges à propos des recommandations AcceDe Web.
Étant donné que votre demande relève davantage d’un forum d’entraide, nous vous suggérons donc de la publier sur ce type d’espace : Forum « Accessibilité du Web d’Alsacréations », par exemple.
Bien à vous,
Johan
-
-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour,
La fiche concernant les onglets sur https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html est maintenant très différente de la structure que vous proposez. Que recommenderiez-vous plutôt de suivre ?
J’imagine que votre pattern est très bien testé.
Merci beaucoup !-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour,
Désolé pour notre réponse quelque peu tardive.
Oui, nous vous confirmons que les recommandations de cette fiche collent bien au motif de conception ARIA « Tabs ». Et que le pattern est bien testé.
En fait, l’exemple que vous évoquez (« Example of Tabs with Manual Activation ») est une variante de celui-ci : « Example of Tabs with Automatic Activation ».
Ces deux implémentations sont bien compatibles avec l’accessibilité.
Nous restons à votre écoute, si besoin.
Johan-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour,
Merci de votre réponse !
-
-
-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Salut je me dis qu’un rappel des critères Critère 3.2 [A], Critère 10.14 [A], Critère 10.15 [A] seraient un plus pour cette fiche.
Accessiblement votre :) ,
/J-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bonjour,
Tu as bien raison, et voici les correspondances AcceDe Web de ces critères RGAA :
- Conception graphique : 3.2. Assurer la compréhension de l’information même en l’absence de couleurs.
- Intégration HTML/CSS : 10.3. Garantir la compréhension de l’information même lorsque CSS est désactivé.
Sébastien.
-
-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
En jetant un œil sur le socle HTML je vois que l’attribut « disabled » est utilisé. Cet attribut s’applique aux éléments HTML de formulaires (boutons, champs texte, etc.), du coup, ne devrions-nous pas utiliser l’attribut « aria-disabled » dans cet exemple ? « disabled » fonctionne lorsque l’on utilise un « » mais est-ce bien d’utiliser un élément html pour son comportement navigateur (focussable, cliquable, désactivable) alors qu’on lui force un rôle différent du sien (dans ce cas-ci le rôle « tab ») pour parvenir à nos fins ?
Merci
-
Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.
Bien vu et merci Thomas !
Nous avons remplacé
disabled="disabled"
pararia-disabled="true"
.
-
Ajouter un commentaire
Mises à jour
- 28/08/2024
- Mise à jour mineure.