Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

<menu> : l'élément de menu

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'élément HTML <menu> est une alternative sémantique à <ul>, mais il est traité par les navigateurs (et exposé dans l'arbre d'accessibilité) comme identique à <ul>. Il représente une liste non ordonnée d'éléments (représentés par des éléments <li>).

Exemple interactif

<div class="news">
  <a href="#"
    >Le télescope Webb de la NASA livre l'image infrarouge la plus profonde de
    l'univers à ce jour</a
  >
  <menu>
    <li><button id="save">Enregistrer pour plus tard</button></li>
    <li><button id="share">Partager cette actualité</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.

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

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 à :

html
<ul>
  <li><button onclick="copy()">Copier</button></li>
  <li><button onclick="cut()">Couper</button></li>
  <li><button onclick="paste()">Coller</button></li>
</ul>

CSS

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. Si au moins un enfant du menu est un élément <li> : contenu tangible.
Contenu autorisé Zéro ou plusieurs occurrences de <li>, <script> et <template>.
Omission de balises Aucune, la balise d'ouverture et la balise de fermeture sont obligatoires.
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

Spécifications

Specification
HTML
# the-menu-element

Compatibilité des navigateurs

Voir aussi

  • Les autres éléments HTML relatifs aux listes : <ol>, <ul> et <li>.