Тег <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)
accesskey Горячая клавиша для активации элемента
class CSS-классы для стилизации элемента
contenteditable Разрешает редактирование содержимого
data-* Пользовательские данные элемента
dir Направление текста (ltr|rtl)
hidden Скрывает элемент от отображения
id Уникальный идентификатор элемента
lang Язык содержимого элемента
spellcheck Включает проверку орфографии
style Инлайновые CSS-стили элемента
tabindex Порядок перехода при навигации по Tab
title Всплывающая подсказка для элемента
translate Определяет возможность перевода содержимого
compact Компактный вид меню (устарел)

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

3.0 1.0 3.5 1.0 1.0