Я приняла решение использовать тег menu для разметки меню на всех сайтах выполненных в нашей веб-мастерской фирме. Это семантично, уже поддерживается во всех браузерах начиная с IE6, и рекомендуется с точки зрения html5.
Разметка меню в этом блоге не исключение, если вы посмотрите код то увидите что-то типа этого:
<menu>
<li></li>
<li class="active"><b>Свежие</b></li>
<li><a href="/news/">Все записи</a></li>
<li><a href="/feedback/">Книга отзывов</a></li>
<li><a href="http://usabili.ru/news/rss/" rel="alternate">RSS</a></li>
<li><a href="mailto:askme@usabili.ru">askme@usabili.ru</a></li>
</menu>
Стоит заметить, что теги menu, также как и iframe запрещены в спецификации HTML 4.01 Strict, однако я не собираюсь отказываться от обоих. Согласно спецификации HTML 4.01, браузеры отображают тег menu также как и ul. Однако, боясь валидатора, многие вебмастера вместо <menu></menu> используют <ul id="menu"></ul>, что на несколько символов удлинняет разметку и селекторы css.
Спецификация HTML5 вернула menu в ряды полноценных тегов и наделила его дополнительными свойствами.
Кроме элементов списка (<li> - list items) содержанием меню могут быть любые строчные элементы, например кнопки (<botton>) или другие теги menu.
Возможные состояния
Тег menu может иметь необязательный атрибут type, у которого есть три состояния: list, toolbar, context.
List (по умолчанию)
В состоянии list (список) тег menu ведёт себя как и список <ul>, в случае если в нём присутствуют элементы списка <li>, или как див, если в нём присутствуют inline элементы.
Toolbar
В этом состоянии браузер должен отобразить меню как линейку инструментов.
Например у нас есть такая вёрстка
<menu type="toolbar"> <li> <menu label="File"> <button type="button" onclick="fnew()">New...</button> <button type="button" onclick="fopen()">Open...</button> <button type="button" onclick="fsave()">Save</button> <button type="button" onclick="fsaveas()">Save as...</button> </menu> </li> <li> <menu label="Edit"> <button type="button" onclick="ecopy()">Copy</button> <button type="button" onclick="ecut()">Cut</button> <button type="button" onclick="epaste()">Paste</button> </menu> </li> <li> <menu label="Help"> <li><a href="help.html">Help</a></li> <li><a href="about.html">About</a></li> </menu> </li> </menu>
она могла бы выглядеть в браузере так:

Если же браузер не будет поддерживать html5, то он просто отобразит это как 3 последовательных списка.
Context
Данный тип означает что меню контекстное
, т.е. доступно например по клику мышки. Такое меню может содержать элемент command - который является нововведённым абстрактным элементом.
<form name="npc"> <label>Character name: <input name=char type=text contextmenu=namemenu required></label> <menu type=context id=namemenu> <command label="Pick random name" onclick="document.forms.npc.elements.char.value = getRandomName()"> <command label="Prefill other fields based on name" onclick="prefillFields(document.forms.npc.elements.char.value)"> </menu> </form>
По замыслу такой код должен добавить текстовому полю элементы в контекстное меню. С указанным названием и действием при выборе.
Заключение
Я настоятельно советую всем веб-мастерам и студиям отучаться от пагубной практики использования ненумерованных списков ul или, того хуже, таблиц для построения меню. Для разметки они не несут никакого смысла (семантики), поэтому я выбираю этот тег.


Комментарии:
selenit2 (selenit)
01.12.2009 09:52:29
selenit2 (selenit)
01.12.2009 09:54:10
Moony (Елена Лунная)
01.12.2009 18:33:37
Moony (Елена Лунная)
01.12.2009 19:36:06
selenit2 (selenit)
01.12.2009 20:12:15
selenit2 (selenit)
01.12.2009 20:23:10
Moony (Елена Лунная)
01.12.2009 21:15:37
Moony (Елена Лунная)
01.12.2009 21:18:34
selenit2 (selenit)
02.12.2009 07:13:26
SelenIT
27.09.2014 17:58:42
Елена Лунная
01.10.2014 21:36:57