Aller au contenu

Balise HTML <menu>

La balise &lt;menu&gt; définit une liste de commandes ou d'éléments de menu. Historiquement, elle était utilisée pour créer des menus contextuels, des barres d'outils et répertorier les contrôles de formulaire.

Un menu contextuel était historiquement constitué d'un élément &lt;menu&gt; contenant des éléments &lt;menuitem&gt; pour chaque option sélectionnable, ainsi que des éléments &lt;hr&gt; qui divisaient le contenu du menu en sections à l'aide de lignes séparatrices. Toutefois, ces fonctionnalités ont été supprimées de la spécification HTML.

Un menu de barre d'outils utilise un élément &lt;menu&gt;. Son contenu peut être structuré de deux manières :

  • Il peut contenir une liste non ordonnée d'éléments représentés par l'élément HTML &lt;li&gt;.
  • Il peut contenir un contenu de flux qui décrit les options et commandes accessibles.

DANGER

La balise &lt;menu&gt; est considérée comme obsolète, et la balise &lt;menuitem&gt; a été complètement supprimée de la spécification HTML. La prise en charge des menus contextuels et des barres d'outils via ces balises a été largement supprimée de tous les principaux navigateurs. Pour les menus contextuels modernes, utilisez CSS et JavaScript. Pour les listes standard, utilisez plutôt l'élément <ul>.

Syntaxe

La balise &lt;menu&gt; s'utilise par paires. Le contenu est écrit entre les balises d'ouverture (&lt;menu&gt;) et de fermeture (&lt;&#8203;/menu&gt;).

Exemple de la balise HTML &lt;menu&gt; avec des éléments &lt;li&gt; :

Exemple de balise HTML &lt;menu&gt;

Remarque : Les navigateurs modernes ne rendent pas <menu> comme une liste par défaut, donc display: block et list-style: none sont utilisés pour réinitialiser le style par défaut.

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      menu {
        display: block;
        list-style: none;
        padding: 0;
      }
      menu li {
        display: block;
        padding: 5px;
        border: 1px solid #ccc;
        margin-bottom: 2px;
      }
    </style>
  </head>
  <body>
    <menu>
      <li>ol - ordered list</li>
      <li>ul - unordered list</li>
      <li>menu - menu list</li>
    </menu>
  </body>
</html>

Résultat

menu tag example

Exemple de la balise HTML &lt;menu&gt; pour créer un menu de barre d'outils :

Balise HTML &lt;menu&gt; dans les navigateurs modernes

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      menu {
        display: flex;
        gap: 10px;
        padding: 10px;
        background: #f0f0f0;
        border: 1px solid #ccc;
      }
      menu li {
        list-style: none;
        padding: 8px 12px;
        background: #1c87c9;
        color: #fff;
        cursor: pointer;
        border-radius: 4px;
      }
    </style>
  </head>
  <body>
    <menu>
      <li onclick="alert('Refresh')">Refresh</li>
      <li onclick="alert('Share')">Share</li>
      <li onclick="alert('Email')">Email</li>
    </menu>
  </body>
</html>

La différence entre les balises &lt;menu&gt; et &lt;ul&gt;

Ces deux éléments ont un comportement similaire. Les éléments &lt;menu&gt; et &lt;ul&gt; sont tous deux utilisés pour créer des listes non ordonnées. La principale différence est que la balise &lt;menu&gt; est spécifiquement conçue pour les commandes, les barres d'outils et les menus contextuels, tandis que la balise &lt;ul&gt; est utilisée pour les listes non ordonnées générales.

Attributs

AttributValeurDescription
labeltexteDéfinit une étiquette visible pour le menu.
typepopup, toolbar, contextDéfinit le type de menu. Remarque : L'attribut type et ses valeurs étaient expérimentaux et ont été supprimés dans HTML5.1.

La balise &lt;menu&gt; prend également en charge les Attributs globaux et les Attributs d'événement.

Pratique

What is the purpose of the '<menu>' HTML tag, and on which browsers can it be used?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.