Верстка меню на html5 | Vaden Pro
Вы здесь
Главная → Блог → HTML → Верстка меню на html5
Раздел:
Не так давно в свет вышел новый стандарт разметки гипертекста html5, который открыл перед веб-мастерами огромный простор для улучшения понимания структуры сайта поисковыми роботами. Изменения коснулись и подходов к разметке навигации.
При использовании 4-го стандарта html оптимальным вариантом верстки меню для сайта был следующий:
<ul> <li><a href="#">Пункт меню 1</a></li> <li><a href="#">Пункт меню 2</a></li> <li><a href="#">Пункт меню 3</a></li> </ul>
Ну а что? Все крайне логично и лаконично. Тег ul согласно документации W3C следует использовать для разметки списков с перечислением чего-либо, а что такое меню, если не список ссылок на конкретные структурные части нашего ресурса?
Новый подход к верстке меню в html5
С выходом 5-го html мы узнали о существовании нового тега nav и что его тоже вроде как следует использовать для разметки меню и, не мудрствуя слишком много, из симбиоза старых и новых знаний получилась конструкция следующего содержания:
<nav> <ul> <li><a href="#">Пункт меню 1</a></li> <li><a href="#">Пункт меню 2</a></li> <li><a href="#">Пункт меню 3</a></li> </ul> </nav>
На первый взгляд все прекрасно, да и на второй ошибок особо здесь нет, НО! Списки предназначены просто для перечисления чего-либо по порядку. Они не предназначены для разметки навигации. И если раньше у нас особо не было выбора как размечать навигацию, то в новых реалиях все значительно упростилось.
Для того, чтобы поисковый робот понял, что перед ним находится элемент навигации по сайту одного наличия тега nav уже более чем достаточно. А дальше мы можем все максимально упростить:
<nav> <a href="#"> Пункт меню 1</a> <a href="#"> Пункт меню 2</a> <a href="#"> Пункт меню 3</a> </nav>
Среди преимуществ данного варианта разметки меню на html 5 мы можем выделить следующие:
- Уменьшая количество кода на странице мы упрощаем ее обработку браузерам и поисковым роботам, что положительно сказывается на SEO сайта.
- Меньше тегов — короче DOM структура документа, что тоже лишний плюс для обработки страницы различными приложениями.
- Чем лаконичнее код, тем он чище и проще к восприятию.
Как сверстать вложенные меню в html5?
Вложенность меню с использованием новых стандартов хоть и будет выглядеть непривычно с первого взгляда, но зная предназначение тегов 5-го html данную структуру становится достаточно просто понять:
<nav> <section> <a href="#"> Пункт меню 1</a> <nav> <a href="#"> Подпункт меню 1</a> <a href="#"> Подпункт меню 2</a> <a href="#"> Подпункт меню 3</a> </nav> </section> <a href="#"> Пункт меню 2</a> <a href="#"> Пункт меню 3</a> </nav>
Используя тег section мы объединяем группу ссылок в 1 логический элемент меню, дальше же действуем по принципу схожему с принципом вложенности списков: используя второй nav внутри первого мы сообщаем о принадлежности ссылок в этом теге к более низкому уровню навигации, тобишь говорим, что ссылки которые будут в нем содержаться это уже не пункты, а подпункты нашего меню.
Эта конструкция хоть и не привычна на первый взгляд, но все-же во многом проще, чем аналогичная структура выполненная списками.
Подводя итоги
К примеру, если для оформления меню нужны дополнительные элементы, на которые нужно повесить всякие прикольные фишки в css, то лучше использовать списки, которые их вам предоставят, чем лепить вокруг ссылок пустые дивы.
Ключевые слова:
Меню сайта
Еще интересное
HTML5 разметка меню
Главная/ Учимся Javascript, CSS, HTML/ Тегофеншуй — шаг к новому уровню качества HTML кода/ Accessibility/ HTML5 разметка меню
Дата публикации: 30.01.2013
Многие из нас привыкли верстать меню используя списки:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">HTML и CSS приемы</a></li> <li><a href="#">Обучение</a></li> <li><a href="#">HTML справочник</a></li> </ul>
В HTML5 для разметки навигаций появился специальный тег <nav> и меню теперь многие начали верстать так:
<nav> <ul> <li><a href="#">Главная</a></li> <li><a href="#">HTML и CSS приемы</a></li> <li><a href="#">Обучение</a></li> <li><a href="#">HTML справочник</a></li> </ul> </nav>
Вроде все структурно и четко.
С этим недостатком в первую очередь сталкиваются пользователи голосовых браузеров, которые при переходе к меню слышат «Список из 4-х пунктов». А затем перечисление этих пунктов, при чем перед тем как назвать текст пункта будет звучать «bullet» — для неупорядоченных списков, и номер пункта для упорядоченных. Чтобы этого избежать лучше верстать навигацию так:
<nav> <a href="#">Главная</a> <a href="#">HTML и CSS приемы</a> <a href="#">Обучение</a> <a href="#">HTML справочник</a> </nav>
А если следовать рекомендациям WAI-ARIA, то так:
<nav role="navigation"> <a href="#">Главная</a> <a href="#" >HTML и CSS приемы</a> <a href="#">Обучение</a> <a href="#">HTML справочник</a> </nav>
Спорить можно долго как более правильно, тем более, что role можно добавить и в обычный список. Но для себя в HTML5 разметке навигации нашел дополнительные плюсы:
- меньше DOM элементов, а значит страница быстрее и легче;
- меньше кода — лучше SEO.
Как быть с вложенным меню
<nav> <section> <a href="#">Главная</a> <nav> <a href="#">HTML и CSS приемы</a> <a href="#">Обучение</a> <a href="#">HTML справочник</a> </nav> </section> <a href="#">HTML и CSS приемы</a> <a href="#">Обучение</a> <a href="#">HTML справочник</a> </nav>
Заметка
Применять такую разметку или по старинке на списках — нужно решать в рамках конкретной задачи: видеть дизайн, знать какие цели у проекта и кто его пользователи. Например, чтобы реализовать некоторые дизайнерские задумки придется все равно добавлять теги. В таких случая проще списки оставить.
Материалы
- Navigation in Lists: To Be or Not To Be
- HTML5 Accessibility Chops: section elements
- W3C :: The Roles Model
Теги: семантический HTML, навигация, доступность, HTML5
html — Альтернативы для элемента меню HTML5 типа панели инструментов?
спросил
Изменено 9 лет, 4 месяца назад
Просмотрено 4к раз
Я пытаюсь создать меню с помощью HTML5 (введите панель инструментов). Оказывается, ни один браузер в настоящее время не поддерживает тип панели инструментов. (Спасибо, Зак, что указал мне на это) Какая будет лучшая реализация, которая работает для Chrome и Firefox?
В настоящее время я думаю о том, чтобы продолжить использовать элемент меню в соответствии со спецификацией HTML5 и использовать CSS для его стилизации по мере необходимости и JS для добавления поведения.
- html
- меню
Следующая публикация списка рассылки объясняет текущее намерение для меню типа панели инструментов:
- Панели инструментов — это не что иное, как элемент с именем. Никакого волшебства, никакой специальной модели содержимого, это все CSS для стиль, вы используете обычные элементы управления формы для заполнения панели инструментов.
из http://lists.w3.org/Archives/Public/public-whatwg-archive/2012Dec/0264.html
Следовательно, я осмеливаюсь сказать, что могу использовать меню для всех браузеров, даже если браузер явно не поддерживает семантику элемента меню HTML5, потому что он все равно будет отображать его как блок, поскольку пользовательские агенты, которые я проверил (например, firefox, chrome, safari, т. е.), меню стиля с display: block.
Если вы готовы использовать немного jquery, и если я понимаю ваш вопрос, то простой
поможет.
подробнее о виджетах панели навигации читайте здесь: http://demos.jquerymobile.com/1.4.1/navbar/
1Я бы взглянул на загрузочное меню, оно работает (IMO) почти как панель инструментов и широко поддерживается во многих браузерах.
Он также содержит глификоны, так что вы можете легко добавлять значки кнопок рядом с метками
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя адрес электронной почты и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
Одним из новых элементов HTML 5 является элемент , который позволяет группировать ссылки, что приводит к более семантической разметке и дополнительной структуре, которые могут помочь программам чтения с экрана. В этой статье я расскажу, как и где его использовать, а также некоторые оговорки, которые у меня есть с определением спецификаций.
Сначала я подумал, что элемент довольно прост. И хотя он по-прежнему очень прост в использовании, я обнаружил, что спецификация не слишком полезна; многие решения остаются за разработчиком. Затем в понедельник Хикси внес изменение в определение
в черновике по подсказке нашего собственного доктора Брюса.
Как это использовать
Вы, вероятно, привыкли использовать что-то вроде
<ул>Или
Ну ради вашей разметки ничего особо не изменится так как у вас теперь будет примерно так
Спецификация
Спецификация HTML 5 определяет
as:
Элемент nav представляет собой раздел страницы, который связан с другими страницами или частями внутри страницы: раздел с навигационными ссылками. Не все группы ссылок на странице должны находиться в элементе навигации, только разделы, состоящие из основных блоков навигации, подходят для элемента навигации. В частности, нижние колонтитулы часто содержат список ссылок на различные ключевые части сайта, но в таких случаях больше подходит элемент нижнего колонтитула, и для этих ссылок не требуется элемент навигации.
Ключевая фраза « основная навигация » (ранее основная навигация).
Глядя на приведенный ими пример —
«В следующем примере на странице есть несколько мест, где присутствуют ссылки, но только одно из этих мест считается разделом навигации».<тело> <заголовок>Проснись, овца!
Последнее изменение: <время>2009 г.-04-01
<навигация>Навигация
<ул>Указатель всех статей Вещи, которые нужно овце проснуться сегодня Овца, которую нам удалось разбудить заголовок> <статья> <р>... содержимое страницы будет здесь ... статья> <нижний колонтитул>Авторское право © The Example Company, 2006 г.
нижний колонтитул>