<menu> : l'élément de menu
L'élément HTML <menu>
est une alternative sémantique à <ul>
, mais est traité par les navigateurs, et en termes d'accessibilité comme un élément <ul>
. Il représente une liste d'éléments non-ordonnée (chaque élément de la liste étant représenté par un élément <li>
).
Exemple interactif
<div class="news">
<a href="#">NASA’s Webb Delivers Deepest Infrared Image of Universe Yet</a>
<menu>
<li><button id="save">Save for later</button></li>
<li><button id="share">Share this news</button></li>
</menu>
</div>
.news {
background-color: bisque;
padding: 1em;
border: solid thin black;
}
menu {
list-style-type: none;
display: flex;
padding: 0;
margin-bottom: 0;
gap: 1em;
}
Attributs
Cet élément inclut uniquement les attributs universels.
Notes d'utilisation
Les éléments <menu>
et <ul>
représentent tous les deux une liste non-ordonnée d'éléments. <ul>
doit être utilisés pour des éléments qui doivent uniquement être affichés alors que <menu>
était initialement conçu pour des éléments interactifs.
L'élément connexe <menuitem>
a été déprécié.
Note :
Dans d'anciennes versions de la spécification HTML, l'élément <menu>
pouvait être utilisé pour représenter un menu contextuel. Cette fonctionnalité est désormais considérée comme obsolète et ne fait plus partie de la spécification.
Exemples
>Barre d'outils
Dans cet exemple, on utilise un élément <menu>
afin de créer une barre d'outils pour une application d'édition.
HTML
<menu>
<li><button onclick="copy()">Copier</button></li>
<li><button onclick="cut()">Couper</button></li>
<li><button onclick="paste()">Coller</button></li>
</menu>
On notera que, sur le plan fonctionnel, cela est équivalent à :
<ul>
<li><button onclick="copy()">Copier</button></li>
<li><button onclick="cut()">Couper</button></li>
<li><button onclick="paste()">Coller</button></li>
</ul>
CSS
menu,
ul {
display: flex;
list-style: none;
padding: 0;
width: 400px;
}
li {
flex-grow: 1;
}
button {
width: 100%;
}
Résultat
Résumé technique
Catégories de contenu |
Contenu de flux et contenu tangible si au moins un enfant du menu est un élément <li> .
|
---|---|
Contenu autorisé | Zéro ou plusieurs occurrences de <li> , <script> , et <template>
|
Omission de balises | Aucune balise ne doit être omise |
Parents autorisés | Tout élément qui accepte du contenu de flux. |
Rôle ARIA implicite |
list
|
Rôles ARIA autorisés |
directory , group , listbox , menu , menubar , none , presentation , radiogroup , tablist , toolbar ou tree
|
Interface DOM | HTMLMenuElement |