Exemple de menu déroulant
Thématiques associées :- Composant
Date de parution
Mise à jour de l'article du
Introduction
Les menus déroulants permettent d’organiser et d’afficher des options de navigation ou des actions de manière compacte et structurée. Cependant, s’ils ne sont pas correctement développés, ils créent des problèmes d’accessibilité pour de nombreux utilisateurs.
Un menu déroulant accessible garantit une navigation fluide et intuitive pour tous, en respectant la conformité et les recommandations des normes (WCAG, RGAA, EN301549 etc.).
Dans les exemples suivants, nous allons utiliser le menu déroulant disponible dans la librairie Boosted.
Cette librairie basée sur Bootstrap permet de concevoir rapidement des interfaces accessibles aux couleurs de la charte Orange et conformes aux normes WCAG ainsi qu'au motif de conception aria combobox
Menu déroulant
Pour que le menu déroulant soit accessible, il faudra faire particulièrement attention aux points suivants :
- Permettre la navigation à la souris et au clavier (navigation avec la touche Tab, activation avec Entrée ou Espace, déplacement avec les flèches directionnelles).
- Être compatible avec les technologies d’assistance(AT), en fournissant une sémantique, des rôles et des attributs adaptés.(
aria-expandedetaria-currentpar exemple) - Une visibilité et un contraste suffisants pour une bonne lisibilité des textes et du focus au clavier.
- Le comportement du menu déroulant et de la sélection d'un élément doivent être prévisibles et cohérents pour éviter toute confusion.
Exemple
Code de l'exemple
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle" aria-expanded="false" type="button" id="dropdownMenu1" data-bs-toggle="dropdown">
Mon compte
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#" >Mon panier</a></li>
<li><a class="dropdown-item" href="#">Mes commandes</a></li>
<li><a class="dropdown-item" href="#">Mes informations</a></li>
<li role="separator" class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Déconnexion</a></li>
</ul>
</div>
Attributs ARIA
aria-expanded: l'attributaria-expandedavec comme valeurtrue/false, permet de vocaliser l'état du menu (ouvert ou fermé).aria-current: si le menu déroulant est utilisé au sein d'un menu de navigation, prévoir l'ajout d'un attributaria-current="page"sur l'item correspondant à la page active.aria-haspopup: l'attributaria-haspopupest réservé au rôlemenu(voir paragraphe "Cas particulier des menus applicatifs"). Il n'est donc pas présent dans cette implémentation.
Place aux tests
Navigation au clavier
- Le menu se ferme. À la fermeture, le focus est automatiquement repositionné sur le bouton permettant d'ouvrir le menu
- Déplacer le focus sur le bouton « Mon compte » à l'aide de la touche Tab et valider avec la touche Entrée.
- Le menu s'ouvre.
- Utiliser les flèches Haut/Bas.
- Celles-ci permettent de se déplacer sur les différents éléments du menu.
- Appuyer sur la touche Échap.
- Le menu se ferme. À la fermeture, le focus est automatiquement repositionné sur le bouton permetant d'ouvrir le menu
Navigation au lecteur d'écran
- Se positionner sur le bouton « Mon compte ».
- Le lecteur d'écran indique qu'il s'agit d'un menu déroulant ; de plus il indique l'état du menu (ouvert ou fermé).
- Appuyer sur la touche Entrée.
- Le menu s'ouvre, le premier élément est sélectionné. Cet élément est automatiquement vocalisé par le lecteur d'écran.
- Utiliser les flèches Haut/Bas.
- Celles-ci permettent de se déplacer sur les différents éléments du menu.
- Sélectionner un élément du menu à l'aide de la touche Entrée.
- Le menu se ferme. Comme le focus est replacé automatiquement, le lecteur d'écran vocalise à nouveau le bouton du menu, ainsi que son état.
En complément le pattern ARIA décrit l'utilisation d'un attribut aria-controls, ainsi que des interactions claviers optionnelles supplémentaires : Home/End
Le motif de conception ARIA décrit les composants "Menu" et "Menubar" qui utilisent les rôles menu ou menubar.
Cas particulier des menus applicatifs
Le pattern ARIA décrit un composant "Menu" et "Menubar", utilisant les rôles menu ou menubar.
Attention, ce pattern est réservé uniquement à la création de menu applicatif, dont les interactions devront se rapprocher du comportement des menus présent dans des applications de bureaux par exemple.
Ces implémentations sont plus complexes et non nécessaires aux menus de navigation web.
Exemple : Editor Menubar Example