--- title: slug: Web/HTML/Element/menu tags: - Element - Experimental - HTML - HTML interactive elements - Navigation - Reference - Site Navigation - UI - UX - User Interface - User experience - Web - menu - menus - HTML 対話型コンテンツ - HTML:フローコンテンツ - HTML:知覚可能コンテンツ - サイトナビゲーション - メニュー - ユーザーインターフェイス - 要素 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 ロール list
許可されている ARIA ロール {{ARIARole("directory")}}, {{ARIARole("group")}}, listbox, {{ARIARole("menu")}}, {{ARIARole("menubar")}}, {{ARIARole("none")}}, {{ARIARole("presentation")}}, {{ARIARole("radiogroup")}}, {{ARIARole("tablist")}}, {{ARIARole("toolbar")}}, {{ARIARole("tree")}}
DOM インターフェイス {{DOMxRef("HTMLMenuElement")}}

属性

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

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

使用上の注意

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

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

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

{{anch("Toolbar", "ツールバーメニュー")}} は、 <menu> 要素の中身が 2 通りのうちの一方で記述されたもので構成されます。 {{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.2")}} から変更なし
{{SpecName("HTML5.1", "interactive-elements.html#the-menu-element", "<menu>")}} {{Spec2("HTML5.1")}}

ブラウザーの互換性

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

関連情報