--- title: slug: Web/HTML/Element/menu tags: - HTML - HTML 対話型コンテンツ - 'HTML:フローコンテンツ' - 'HTML:知覚可能コンテンツ' - Reference - Web - ウェブ - サイトナビゲーション - メニュー - ユーザーインターフェイス - 要素 translation_of: Web/HTML/Element/menu ---
{{HTMLRef}}{{SeeCompatTable}}

HTML の <menu> 要素は、ユーザーが実行またはアクティブ化可能なコマンドのグループを表します。これはスクリーンの上部にあるリストメニューや、ボタンを押したときにボタンの下部に現れるようなコンテキストメニューを含みます。

コンテンツカテゴリ

フローコンテンツ。要素の子が1個以上の {{HTMLElement("li")}} 要素を含んでいる場合は知覚可能コンテンツ

許可されている内容

要素がリストメニュー状態である場合: フローコンテンツまたは0個以上の {{HTMLElement("li")}}, {{HTMLElement("script")}}, {{HTMLElement("template")}}。 (リストメニューは、親要素がコンテキストメニュー状態の {{HTMLElement("menu")}} でない場合の既定の状態です。)

要素がコンテキストメニュー状態である場合は、任意の順序で、0個以上の {{HTMLElement("menu")}} (コンテキストメニュー状態に限る), {{HTMLElement("menuitem")}}, {{HTMLElement("hr")}}, {{HTMLElement("script")}}, {{HTMLElement("template")}}。

タグの省略 {{No_Tag_Omission}}
許可されている親要素 フローコンテンツを受け入れるすべての要素
許可されている ARIA ロール なし
DOM インターフェイス {{DOMxRef("HTMLMenuElement")}}

属性

この要素にはグローバル属性があります。

{{HTMLAttrDef("label")}} {{Deprecated_inline}}
ユーザーに対して表示する、メニューの名称です。入れ子のメニューで、サブメニューへアクセスできるようにするためにラベルを与えます。親要素がコンテキストメニュー状態の {{HTMLElement("menu")}} である場合に限り、必須です。
{{HTMLAttrDef("type")}}
この属性は定義済みのメニューの種類を示すものであり、以下2つの値のいずれかを指定します。
  • context {{Deprecated_inline}} : ポップアップメニュー状態であり、他の要素を経由してアクティブになるコマンドのグループを表します。 {{HTMLElement("button")}} 要素の {{HTMLAttrxRef("menu", "button")}} 属性や、 contextmenu 属性を持つ要素を経由することが考えられます。 <menu> 要素が別の menu 要素の入れ子になっているとき、親要素がすでにこの状態であれば、子要素で値が指定されていない場合の既定値になります。
  • toolbar: ツールバー状態であり、ユーザーと対話するための一連のコマンドを表します。これは {{HTMLElement("li")}} が並んだ番号なしリストの形か、子要素に <li> を含まない場合は、利用できるコマンドを記述したフローコンテンツです。属性が指定されていない場合の既定値です。

使用上の注意

{{HTMLElement("menu")}} 要素と {{HTMLElement("ul")}} 要素はともに順序なしリストの項目を表すものですが、 {{HTMLElement("ul")}} は主に項目の表示を目的とするのに対し、 {{HTMLElement("menu")}} 要素は操作を行うための対話型の項目を含めるためのものです。

HTML メニューは、コンテキストメニュー(一般的に、別の要素を右クリックすると表示される)またはツールバーを作成するために使用できます。

{{anch("Context menu", "コンテキストメニュー")}}は、「メニューで選択可能な項目を表す {{HTMLElement("menuitem")}} 要素」「メニュー内のサブメニューを表す <menu> 要素」「メニューの内容をセクションに分けるセパレーター行を表す {{HTMLElement("hr")}} 要素」を包含する <menu> 要素で構成されます。. コンテキストメニューは、関連付ける要素の {{HTMLAttrxRef("contextmenu")}} 属性、または {{anch("Button menu", "ボタンでアクティブにするメニュー")}} であれば {{HTMLElement("button")}} 要素の {{HTMLAttrxRef("menu", "button")}} 属性を使用して、メニューをアクティブ化する要素に紐づけます。

{{anch("Toolbar", "ツールバーメニュー")}} は、以下のいずれかをコンテンツにした <menu> 要素で構成されます: {{HTMLElement("li")}} 要素で表した項目の順不同リスト (それぞれの項目が、ユーザーが利用できるコマンドやオプションを表します)。または、(<li> 要素がない場合) 使用なコマンドやオプションを表す フローコンテンツ

この要素は HTML4 で非推奨になりましたが、 HTML5.1 および HTML living standard で再導入されました。本ドキュメントは、現行の Firefox の実装について説明します。 HTML 5.1 によって、type 属性の 'list' が 'toolbar' に変わりました。

コンテキストメニュー

{{Deprecated_header}}

HTML

<!-- A <div> element with a context menu -->
<div contextmenu="popup-menu">
  Right-click to see the adjusted context menu
</div>

<menu type="context" id="popup-menu">
  <menuitem>Action</menuitem>
  <menuitem>Another action</menuitem>
  <hr/>
  <menuitem>Separated action</menuitem>
</menu>

CSS

div {
  width: 300px;
  height: 80px;
  background-color: lightgreen;
}

結果

{{EmbedLiveSample("Context_menu", "100%", 80)}}

メニューボタンを実装しているブラウザーはまだありません。 <menu> 要素の {{HTMLAttrxRef("type", "menu")}} 属性は廃止されました。

{{HTMLElement("menuitem")}} 要素は廃止されました。

HTML

<!-- A button, which displays a menu when clicked. -->
<button type="menu" menu="popup-menu">
  Dropdown
</button>

<menu type="context" id="popup-menu">
  <menuitem>Action</menuitem>
  <menuitem>Another action</menuitem>
  <hr/>
  <menuitem>Separated action</menuitem>
</menu>

結果

{{EmbedLiveSample("Menu_button", "100%", 50)}}

ツールバー

ツールバーメニューを実装しているブラウザーはまだありません。

HTML

<!-- A context menu for a simple editor,
   - containing two menu buttons. -->
<menu type="toolbar">
  <li>
    <button type="menu" menu="file-menu">File</button>
    <menu type="context" id="file-menu">
      <menuitem label="New..." onclick="newFile()">
      <menuitem label="Save..." onclick="saveFile()">
    </menu>
  </li>
  <li>
    <button type="menu" menu="edit-menu">Edit</button>
    <menu type="context" id="edit-menu">
      <menuitem label="Cut..." onclick="cutEdit()">
      <menuitem label="Copy..." onclick="copyEdit()">
      <menuitem label="Paste..." onclick="pasteEdit()">
    </menu>
  </li>
</menu>

結果

{{EmbedLiveSample("Toolbar", "100%", 100)}}

仕様書

仕様書 状態 備考
{{SpecName("HTML WHATWG", "grouping-content.html#the-menu-element", "<menu>")}} {{Spec2("HTML WHATWG")}} 最新のスナップショット {{SpecName("HTML5.3")}} から変更なし
{{SpecName("HTML5.1", "interactive-elements.html#the-menu-element", "<menu>")}} {{Spec2("HTML5.1")}}

ブラウザーの互換性

{{Compat("html.elements.menu")}}

関連情報