Правильно ли использовать элемент <menu> в качестве навигации?

Правильно ли использовать тег <menu> в качестве навигации? Как это:

<menu>
    <li><a href = "#">Home</a></li>
    <li><a href = "#">Page one</a></li>
    <li><a href = "#">Page two</a></li>
    <li><a href = "#">Page three</a></li>
</menu>

Или это указано только для Контекстного меню, как например в Мозилле?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
0
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В вашем примере вы правильно используете тег <menu>, и на самом деле именно так вы должны кодировать список навигации.
Тег <menu> — это семантическая альтернатива несемантической <ul>, поскольку браузер воспринимает ее как то же самое.

Чтобы процитировать MDN WebDocs:

Элементы <menu> и <ul> представляют собой неупорядоченный список элементов. Ключевое отличие заключается в том, что <ul> в основном содержит элементы для отображения, а <menu> предназначен для интерактивных элементов.

<a>анкеры — это интерактивные элементы, поэтому в этом случае <menu> следует правильно использовать в качестве контейнера списка.

Однако ваша формулировка неверна. <menu> — это только контейнер для неупорядоченного списка якорей, но не вся навигация, для которой следует использовать элемент <nav>.

Например, панель навигации может содержать не только ссылки:

<nav>
  <img src = "logo.jpg" alt = "Website Logo">
  <h1>table of contents</h1>
  <menu>
    <li><a href = "#chapter-1">Chapter 1</a></li>
    <li><a href = "#chapter-2">Chapter 2</a></li>
    <li><a href = "#chapter-3">Chapter 3</a></li>
  </menu>
  <input type = "text" id = "search-bar">
</nav>

Спецификация говорит, что это «панель инструментов», где каждый элемент «представляет команду, которую пользователь может выполнить или активировать». Я бы сказал, что навигационные ссылки — это не команды. Типичным вариантом использования элемента menu может быть контекстное меню («Копировать», «Вставить», …) или панель инструментов в графическом редакторе («Обрезать», «Рисовать» и т. д.).

unor 25.05.2023 20:10

Элемент <menu> семантически не подходит для навигации. И неправильно говорить, что <ul> не является семантическим элементом — это так.

Sean 06.06.2023 16:23

Нет. Согласно спецификации:

Элемент <menu> представляет панель инструментов, состоящую из ее содержимого, в виде неупорядоченного списка элементов (представленных элементами li), каждый из которых представляет команду, которую пользователь может выполнить или активировать.

Это семантически подходит для панелей инструментов. Одним из примеров панели инструментов является меню форматирования расширенного текста, где пользователи могут нажать кнопку «полужирный», чтобы активировать жирный стиль для своего текста.

Навигация по странице должна быть размечена с помощью элемента <nav>. Если ваша навигация представляет собой список ссылок, используйте <ul> или <ol> внутри этого <nav>, но не <menu>.

Другие вопросы по теме