От автора: приветствую вас на нашем блоге о сайтостроении. Это цикл статей, посвященный новой спецификации и сегодня я бы хотел вам рассказать, как сделать в html5 меню и чем этот процесс отличается от такого же в предыдущих версиях языка.
В чем отличия
Прежде всего я хотел бы сказать, что спецификация не является уж такой и новой – она начала свое становление еще в 2009 году. Собственно, с тех пор происходит постоянное развитие – в html5 появляются новые возможности, современные браузеры все больше и больше поддерживают эти самые возможности, так что уже скоро можно будет говорить о полной поддержке этой технология, хотя она и не является чем-то единым целым, это скорее набор новых возможностей, каждая из которых является самостоятельной.
Ну хорошо, а чем же отличается создание главной навигации (меню), раз уж вы читаете статью на эту тему, то какие-то отличия точно должны быть. Ну а как раньше создавалось меню? Обычно для этого использовали маркированный список, который помещали в дополнительный контейнер для всей навигации – обычный div.
Так вот, с появлением новых тегов теперь можно поступить более правильно – вместо тега div обернуть меню в nav – новый семантический элемент, который создан специально для того, чтобы собирать в него самые главные ссылки, группировать их вместе.
В nav можно поместить как список, так и просто набор ссылок. Мне кажется, это даже более простое и правильное решение, хотя во многих шаблонах по-прежнему видно реализацию меню с помощью тегов ul, li, a.

Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееИнтересно, что контейнер nav создан именно для приоритетных ссылок на странице. На самом деле таких конйтенеров на странице может быть больше одного, но помещать в них стоит только те ссылки, которые действительно формируют главную навигацию (например, верхнее главное меню и его дубль в футере страницы).
Как сделать с помощью html5 горизонтальное меню
Поскольку теперь ссылки можно помещать в семантический элемент nav, то создание горизонтальной навигации я вижу очень просто.
1 2 3 4 5 6 |
<nav> <a href = "#">Главная</a> <a href = "#">Услуги</a> <a href = "#">Контакты</a> <a href = "#">Отзывы</a> </nav> |
Даже не нужно никакого обрамления в список, все изначально будет отображаться в одну строку, так как ссылки – строчные элементы.
Другое дело, что по оформлению они очень ограничены из-за своих строчных свойств. Вы сможете оперировать только такими свойствами как: цвет, размер шрифта, внешние отступы. Если же вы захотите задать определенный фоновый цвет, сделать разделители и добавить внутренние отступы (либо определить размер каждого пункта меню) то со строкой так сделать не получится.
Тут нам придется преобразовывать наши пункты в блочные элементы. Для этого им нужно записать свойство:
1 |
display: block; |
Теперь они идут сверху вниз, то есть наша навигация стала вертикальной. Чтобы вновь превратить ее в горизонтальную, нужно добавить определенные свойства. Например, вместо блочного типа определить для них блочно-строчный, либо задать им (float: left). Читайте подробнее об этих способах здесь.

Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееВертикальная навигация
Обычно, чтобы сделать вертикальное меню в html5 используют список, но нам годится и та разметка, которую я дал вам выше. Как вы увидели, если преобразовать ссылки в блочные, то они автоматически выстроятся друг за другом сверху вниз, потому что два блока не могут стоять на одной строке.
Теперь вы можете применить к ним нужные правила оформления. На блоки действует гораздо больше свойств, чем на строчный элемент, поэтому вы имеете куда больше возможностей. Для примера я добавил такие:
1 2 3 4 5 6 7 8 9 10 |
a{ text-decoration: none; color: #fff; padding: 5px; font-size: 22px; display: block; background: linear-gradient(to right, rgba(96,108,136,1) 0%,rgba(63,76,107,1) 100%); width: 200px; text-align: center } |
В качестве фонового цвета был использован градиент, чтобы меню выглядело более эффектно. Также мы ограничили ширину блоков, хотя на реальном сайте вертикальная навигация обычно стоит где-то в боковой колонке, для которой уже стоят ограничения по ширине, поэтому там это может и не пригодится.
Что еще можно сделать
Наконец, давайте посмотрим, как можно сделать меню в html5 с изменением цвета пунктов при наведении. За добавление стилей к элементу при наведении отвечает псевдокласс hover. Соответственно, достаточно его добавить к ссылкам и написать нужные стили.
1 2 3 4 |
nav a:hover{ color: #000; background: #fff; } |
Теперь при наведении на ссылку она будет черного цвета, а фоновый цвет будет белым. Если вам нужно произвести изменение плавно, допишите свойство transition, значением которого выступает время в секундах, за которое должны поменяться стили.
Ну а что еще можно сделать с нашей навигацией, это уже вы сами можете решить. Это был просто пример того, как ее можно создать и оформить. Вы можете воспользоваться любыми css-свойствами, которые только знаете. Кстати, для очень эффектного оформления любых элементов на веб-странице я рекомендую вам просмотреть видеокурс по CSS3, который есть в нашем премиум-разделе.
Там вы можете найти всю соответствующую информацию: тени, повороты, трансформации, полупрозрачность и т.д. Все лучшие приемы из новой технологии вы можете найти там.
Итак, сегодня мы с вами разобрали процесс создания простейшей навигации с помощью нового тега, а также посмотрели, как это оформить. Подписывайтесь на webformyself, если вам нравятся наши уроки и вы хотите знать о сайтостроении больше.

Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнее