Тег <menu>


Описание

Тег <menu> создает семантический контейнер для списка команд/пунктов меню. В HTML5 был переопределен для создания как контекстных меню, так и панелей инструментов.

Контекстное меню:
<menu type="context" id="file-menu"> <menuitem label="Открыть" onclick="openFile()"></menuitem> <menuitem label="Сохранить" onclick="saveFile()"></menuitem> <hr> <menuitem label="Выход" onclick="closeApp()"></menuitem> </menu> <div contextmenu="file-menu"> Правый клик для меню </div>
Панель инструментов (устаревший подход):
<menu type="toolbar"> <li><button onclick="cut()">Вырезать</button></li> <li><button onclick="copy()">Копировать</button></li> <li><button onclick="paste()">Вставить</button></li> </menu>
Современная альтернатива:
<nav class="toolbar" role="toolbar"> <ul> <li><button aria-label="Вырезать"><svg>...</svg></button></li> <li><button aria-label="Копировать"><svg>...</svg></button></li> </ul> </nav>

Особенности:

  • Поддержка браузерами ограничена (особенно <menuitem>)
  • Для веб-приложений лучше использовать кастомные решения
  • Семантически заменяет <ul> для списков команд
  • Может содержать <li>, <menuitem>, <hr>

Современный пример с ARIA:

<div class="dropdown"> <button aria-expanded="false" aria-controls="dropdown-menu"> Меню </button> <ul id="dropdown-menu" role="menu" hidden> <li role="menuitem">Пункт 1</li> <li role="menuitem">Пункт 2</li> </ul> </div> <style> [role="menu"] { /* Стили меню */ } </style>

Тег <menu> имеет ограниченную поддержку, и для создания меню чаще используют комбинацию <nav>, <ul> и ARIA-ролей.


Атрибуты

label Метка для меню
type Тип меню (toolbar|context)
class CSS-классы для стилизации элемента
data-* Пользовательские данные элемента
dir Направление текста (ltr|rtl)
hidden Скрывает элемент от отображения
id Уникальный идентификатор элемента
lang Язык содержимого элемента
style Инлайновые CSS-стили элемента
title Всплывающая подсказка для элемента
translate Определяет возможность перевода содержимого
compact Компактный вид меню (устарел)

Поддержка браузерами

3.0 1.0 3.5 1.0 1.0