W3Schools.com, и я почти уверен, что помню, как видел состояние W3C.org, которое <menu>
следует использовать для меню панели инструментов и списков команд управления формой.
Итак, какой из них я должен использовать для своего главного меню? Nav
, или Menu
? Это имеет значение?
Ответы:
nav
используется для групп внутренних ссылок (a
элементов). Обычно это означает, что ссылки должны переходить на отдельные страницы или изменять содержимое в случае страницы AJAX. Ожидайте какого-то изменения содержимого при нажатии наnav
элемент.menu
используется для групп управления (a
,input
,button
). Обычно это означает, что входные данные должны выполнять функцию на странице. Ожидайте какого-то взаимодействия с javascript при нажатии наmenu
элемент.nav
: навигация по сайту.menu
: меню для веб-приложения.источник
<li>
элементы непосредственно под<menu>
тег, без необходимости в<ul>
списке. Требование состоит в том, что атрибут<menu>
'stype
не указан или установлен в"toolbar"
. Смотрите спецификацию в<li>
элементе и в<menu>
элементе .<menu>
одну из спецификаций W3C HTML5? Я нахожу его в версии WHAT WG , но не в последнем проекте W3C HTML 5.3 .Вот пост HTML5Doctor
nav
с разделом о том, чем он отличается отmenu
(в основном, использовать его в реальных приложениях). Похоже, ты хочешьnav
.источник
С помощью
<menu>
обычно используется для контекстных меню.У MDN есть хорошая документация: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
источник
Лучшее место, чтобы получить этот ответ, - это сами стандарты HTML 5.
Меню определено в HTML 5.1 2nd Edition .
Nav определяется в HTML 5 .
Есть примечания для навигации, которые я не включил, но считаю важными, но я думаю, что вам лучше получить определение самостоятельно из стандартов.
Определения, отмеченные в этом посте как ответ, близки к правильным, но содержат посторонние утверждения, которые делают сам ответ неправильным.
источник
<nav>
- это раздел (например,<section>
или<article>
), поэтому он появится в структуре вашего HTML-документа. Из-за этого я бы использовал<menu>
99% времени. Для меня<nav>
это сочетание<section>
и<menu>
с добавленным ограничением, которое<nav>
следует использовать специально для навигации, тогда как<menu>
может быть для всего, что можно назвать меню (включая панель навигации). Поэтому большинство панелей навигации, несмотря на то, что они являются панелями навигации, не соответствуют строгим требованиям<nav>
и<menu>
являются более подходящими.Я никогда в своей карьере веб-разработчика не встречал ситуации, когда я хотел бы, чтобы моя панель навигации была частью структуры документа.
источник
<menu>
на веб-сайте, который не является веб-приложением - в 99% случаев ваше «меню» навигации будет представлять собой статические ссылки на другие страницы или другие разделы на странице, для чего<nav>
, согласно к спец.nav
это не лучший выбор тега, потому чтоnav
это элемент раздела, поэтому он станет частью структуры документа, как если бы это раздел с заголовком и содержимым. На самом деле это редкий сценарий, когда вы хотите, чтобы выnav
действовали как секция.menu
было просто предложением как смысловой заменой. Я не вижу ничего в спецификации, что это нельзя использовать таким образом. Кажется, подходит. Но если вы по какой-то причине считаете, что меню предназначено только для того, что вы определяете как веб-приложение, я рекомендуюol
илиul
в качестве замены.<menu>
в настоящее время все еще имеет плохую поддержку. (Неужели это правда, что Chrome не поддерживает его?) Кроме того, вы можете достичь той же семантики, предоставивrole="menu"
атрибут другому элементу (например, div или nav). Атрибут role переопределяет семантику по умолчанию для любого элемента.