Навигация: хедер, меню и бургер

Навигация — это карта сайта в кармане пользователя. Если он не понимает, где он и куда идти, остальной дизайн уже не важен.
«Хорошая навигация невидима: пользователь не думает о ней, он просто попадает куда хотел».

Навигация решает три вопроса: где я, куда могу пойти, как вернуться. На десктопе для этого хватает горизонтального меню в хедере. На мобильном места нет — отсюда паттерн «бургер»: иконка из трёх линий, раскрывающая меню.

Адаптация навигации

  НАВИГАЦИЯ: DESKTOP -> MOBILE
  ----------------------------
  DESKTOP:
  [ Лого ]   Главная  Цены  Блог  [ Войти ]

  MOBILE (свёрнуто):     MOBILE (открыто):
  [ Лого ]      [ = ]    [ Лого ]      [ X ]
                         --------------------
                         Главная
                         Цены
                         Блог
                         [ Войти ]

Бургер — это <button>, а не div: его должно быть видно скринридеру и можно нажать с клавиатуры. Сообщаем состояние через aria-expanded:

<button class="burger" aria-expanded="false" aria-controls="menu">
  <span class="sr-only">Меню</span>
</button>
<nav id="menu" hidden>
  <a href="/">Главная</a>
  <a href="/pricing">Цены</a>
</nav>

Состояния ссылок — обязательны: пользователь должен видеть, где он сейчас и что под курсором.

.nav a { color: var(--color-text); }
.nav a:hover { color: var(--color-action); }
.nav a[aria-current="page"] {   /* текущая страница */
  font-weight: 600;
  border-bottom: 2px solid var(--color-action);
}
/* Sticky-шапка: всегда под рукой */
.header { position: sticky; top: 0; }

Разбор глубже: навигация как ответ на три вопроса

Любую навигацию можно проверить тремя вопросами пользователя: «где я сейчас?», «куда я могу пойти?», «как вернуться?». Если интерфейс не отвечает хотя бы на один из них, человек теряется. «Где я» решается подсветкой текущего пункта (визуально и через aria-current), хлебными крошками, заголовком. «Куда могу» — видимым, понятным набором пунктов. «Как вернуться» — логотипом-ссылкой на главную, кнопкой «назад», предсказуемой структурой. Красивое меню, которое не отвечает на эти вопросы, бесполезно.

Бургер-меню — компромисс, а не идеал. Он экономит дефицитное место на мобильном, но прячет навигацию за лишний тап и за иконку, смысл которой не всем очевиден. Поэтому важные действия (войти, корзина, ключевая CTA) часто выносят наружу, рядом с бургером, а под бургер прячут второстепенное. И уж точно бургер нельзя тащить на десктоп, где места хватает: прятать навигацию там, где она помещается открыто, — значит без причины усложнять путь пользователю.

Доступность навигации — место, где новички спотыкаются чаще всего, потому что визуально «всё работает». Бургер, собранный из div с обработчиком клика, выглядит как кнопка, но для скринридера он невидим, а с клавиатуры на него не перейти. Настоящий <button> получает фокус, нажимается пробелом и Enter и озвучивается как кнопка бесплатно. Атрибут aria-expanded сообщает незрячему пользователю, раскрыто меню или свёрнуто. Это не «дополнительная работа ради галочки» — это разница между сайтом, которым можно пользоваться без мыши и зрения, и сайтом, который для таких людей просто сломан.

Полезно учитывать и правило приоритета и пропадающего меню. Когда пунктов навигации больше, чем влезает, есть зрелый патторн «priority+»: видимые пункты остаются, а лишние сворачиваются под кнопку «Ещё». Это честнее бургера, потому что важное остаётся на виду, а прячется только хвост. Главный принцип любой навигации — иерархия важности: не все пункты равны, и интерфейс должен это отражать. Ключевые разделы — на виду и крупнее, служебные (политика, контакты) — в футере. Ровный список из пятнадцати одинаковых пунктов — это отказ дизайнера думать о приоритетах, переложенный на пользователя.

Как делают ПЛОХО

Бургер сделан из div без aria — скринридер его «не видит», с клавиатуры не нажать. Нет индикации текущей страницы. В меню 12 пунктов вперемешку — пользователь тонет. Меню открыто, но закрыть нечем.

Как делают ХОРОШО

Бургер — настоящая кнопка с aria-expanded и доступным именем. Текущая страница подсвечена (aria-current). Пунктов немного, они сгруппированы. Есть hover/focus-состояния и понятное закрытие.

Чек-лист

  • Бургер — button с aria-expanded и доступным именем.
  • Видна текущая страница (aria-current).
  • У ссылок есть hover и focus состояния.
  • Меню открывается и закрывается с клавиатуры.
  • Пунктов немного, они сгруппированы по смыслу.

Итог. Навигация отвечает «где я и куда идти». Бургер-кнопка с aria, подсветка текущей страницы и видимые состояния делают её понятной и доступной.

Проверьте себя
1. Почему бургер-меню делают из <button>, а не из <div>?
Abutton красивее
Bbutton доступен с клавиатуры и виден скринридеру, div — нет
Cdiv запрещён
Dbutton быстрее
2. Что сообщает атрибут aria-expanded на кнопке меню?
AШирину меню
BРаскрыто меню сейчас или свёрнуто
CЦвет иконки
DЧисло пунктов