Exemple de menu déroulant
Thématiques associées :Préambule
Dans cet exemple 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.
L'exemple d'implémentation décrit ci-dessous est aussi bien adapté aux menus de navigation comme aux composants unitaires présentant une liste d'actions.
Rendu final
Voici le rendu de notre menu.
Code de l'exemple
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" 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>
Place aux tests
Pour que ce menu soit accessible, il doit être utilisable, à la souris, au clavier et au lecteur d'écran.
Navigation au clavier
- 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.
Attributs ARIA
aria-expanded
: l'attributaria-expanded
avec 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-haspopup
est réservé au rôlemenu
(voir paragraphe "Cas particulier des menus applicatifs"). Il n'est donc pas présent dans cette implémentation.
<button aria-expanded="false">Mon compte</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Mon panier</a></li>
<li><a class="dropdown-item" href="#" aria-current="page">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>
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
Exemple : Example Disclosure for Navigation Menus
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 bureaux par exemple.
Ces implémentations sont plus complexes et non nécessaires aux menus de navigation web.
Exemple : Editor Menubar Example