
Адаптивную навигацию настраивают так: сначала определяют приоритеты ссылок и сценарии использования, затем выбирают ширину перехода к мобильному меню, оформляют состояния средствами CSS и добавляют JavaScript для открытия, закрытия и синхронизации атрибутов доступности. После этого проверяют клавиатурное управление, фокус, прокрутку и работу меню без скриптов.
Опорные решения для адаптивной навигации
- Оставляйте в меню только разделы, которые помогают пользователю ориентироваться; длинные списки группируйте по смыслу.
- Выбирайте точку перехода по фактической ширине навигации, а не по модели телефона.
- Поручите CSS отображение и расположение элементов, JavaScript - изменение состояния меню.
- Синхронизируйте видимость панели с
aria-expandedи обеспечьте управление клавиатурой. - Проверяйте меню при отключённых скриптах, увеличенном масштабе и на узких экранах.
Спроектируйте структуру меню для разных ширин экрана
Такой подход подходит сайтам, где навигация должна оставаться доступной и на широком экране, и на мобильном устройстве: например, магазинам, сервисам и сайтам компаний. Не стоит превращать меню в сложную систему вложенных панелей, если разделов мало и их можно разместить обычным списком.
Перед версткой определите основные и второстепенные ссылки, порядок пунктов и необходимость вложенных разделов. В мобильном представлении сохраняйте понятные названия: скрытие текста ради экономии места затрудняет навигацию.
Выберите точку перехода между полной навигацией и мобильным меню
Для работы понадобятся доступ к HTML-шаблону страницы, CSS-файлу и JavaScript-коду, а также браузерные инструменты разработчика. Если сайт использует систему управления контентом или сборщик, выясните, где меняются шаблон шапки и подключение скриптов.
Ширину перехода определяйте по содержимому: уменьшайте окно браузера, пока пункты меню не начнут тесниться, переноситься или перекрывать логотип. Точку перехода задавайте немного раньше этого момента. Конкретное значение зависит от шрифта, длины ссылок и оформления сайта.
Если вы планируете адаптивная верстка сайта заказать у подрядчика, заранее подготовьте карту разделов, макеты ключевых состояний и требования к доступности. Запрос разработка адаптивного сайта цена имеет смысл сравнивать вместе с описанием объёма работ, а не отдельно от состава и поведения навигации.
Сверстайте адаптивное меню на CSS без лишних состояний
До реализации учтите риски и ограничения:
- Не скрывайте навигацию так, чтобы она оставалась недоступной при отключённом JavaScript.
- Не полагайтесь только на цвет или анимацию для обозначения открытого состояния.
- Не задавайте точку перехода без проверки реальной ширины меню и масштаба страницы.
- Избегайте блокировки прокрутки и сложных эффектов, если они не нужны для сценария.
-
Разметьте навигацию семантически.
Используйте элемент<nav>с доступным названием и обычный список ссылок внутри. Кнопка открытия должна быть отдельным элементом, а не ссылкой без адреса. -
Задайте базовое отображение для широкой версии.
Сначала оформите меню, доступное без JavaScript, затем добавьте стили для компактного режима. Например, точку перехода можно определить медиавыражением:@media (max-width: 48rem) { .site-nav__toggle { display: inline-flex; } .site-nav__list { display: none; } .site-nav.is-open .site-nav__list { display: flex; } }Замените селекторы и ширину на соответствующие проекту; этот пример показывает принцип, а не готовую настройку для любого сайта.
-
Свяжите кнопку с панелью.
Задайте панели уникальный идентификатор, а кнопке - атрибутaria-controlsс таким же значением. Используйтеaria-expandedдля отражения состояния. -
Продумайте состояние без скриптов.
Не делайте навигацию изначально невидимой для всех пользователей, если скрипт может не загрузиться. Скрытие мобильной панели применяйте только после того, как JavaScript успешно инициализировал управление. -
Оставьте визуальные эффекты вторичными.
Если добавляете переходы, проверьте их при системной настройке уменьшения анимации. Видимость и доступность ссылок не должны зависеть от завершения анимации.
Добавьте JavaScript для открытия меню и синхронизации ARIA
JavaScript должен менять состояние, а не дублировать оформление CSS: при открытии добавлять класc или атрибут, при закрытии убирать его и обновлять aria-expanded. Учитывайте, что обработчик закрытия по клавише Escape и переход по ссылке должны возвращать пользователя в ожидаемый сценарий.
Проверьте результат по списку:
- Кнопка открывает и закрывает мобильную панель.
- Значение
aria-expandedсоответствует видимому состоянию. - Кнопка имеет понятное доступное имя, а панель связана с ней через
aria-controls. - Нажатие Escape закрывает открытую панель и возвращает фокус на кнопку.
- После выбора ссылки меню закрывается, если это соответствует навигационному сценарию сайта.
- На широкой версии кнопка скрыта, а ссылки доступны обычным способом.
- При ошибке загрузки скрипта навигация остаётся доступной.
Для создания мобильного меню для сайта не обязательно использовать библиотеку: простого обработчика достаточно, если не требуется сложная вложенная навигация. Если меню содержит диалоговые панели или нестандартную логику фокуса, оцените готовые компоненты и протестируйте их поведение.
Предотвратите проблемы с фокусом, прокруткой и клавиатурным управлением
При проверке особенно часто обнаруживаются следующие ошибки:
- Кнопка меняет внешний вид, но не обновляет
aria-expanded. - Скрытые ссылки остаются в порядке клавиатурного фокуса.
- После закрытия меню фокус теряется или оказывается в неожиданном месте.
- Меню перекрывает содержимое, но его нельзя закрыть клавишей Escape.
- Прокрутка страницы блокируется и не восстанавливается после закрытия панели.
- Обработчик закрывает меню при клике по любому месту страницы, включая саму панель.
- Фиксированная высота панели обрезает ссылки при увеличенном масштабе или коротком экране.
- Медиаусловия скрывают навигацию при ширине, на которой кнопка ещё не отображается.
При реализации управления фокусом не помещайте его в скрытые элементы. Если меню не является модальным окном, не ограничивайте перемещение фокуса внутри панели без необходимости.
Проверьте навигацию на устройствах, в браузерах и при сбоях скриптов
Выберите способ проверки по проекту и объёму изменений:
- Браузерные инструменты разработчика. Подходят для первичной проверки ширины перехода, переполнения и медиастилей.
- Физические устройства. Нужны, чтобы проверить сенсорное взаимодействие, прокрутку и фактическое поведение на мобильном экране.
- Клавиатурное тестирование. Пройдите все ссылки клавишей Tab, откройте меню с клавиатуры и проверьте Escape и возврат фокуса.
- Проверка отказоустойчивости. Временно отключите JavaScript и убедитесь, что основная навигация не исчезла полностью.
Пройдите сценарии в нескольких актуальных браузерах, проверьте узкую и широкую ширину, увеличенный масштаб и длинные названия пунктов. Если адаптивное меню CSS JavaScript встроено в сложную шапку или требует поддержки нескольких шаблонов, зафиксируйте поведение в тестовых сценариях. При поиске услуги веб-разработки сайта передайте исполнителю эти сценарии и критерии приёмки, а не только описание внешнего вида.
Практические нюансы адаптивного меню
Как подобрать ширину переключения на мобильное меню?
Ориентируйтесь на момент, когда пункты перестают помещаться без переносов и наложений. Проверьте эту ширину с реальными текстами, логотипом и используемым шрифтом.
Можно ли сделать адаптивное меню только на CSS?
CSS управляет расположением и отображением элементов, но для синхронизации интерактивного состояния и атрибутов доступности обычно нужен JavaScript. Исключение - простой сценарий, в котором нативное поведение HTML полностью соответствует требованиям.
Нужно ли закрывать панель после перехода по ссылке?
Обычно на мобильном экране меню закрывают после выбора ссылки, чтобы оно не оставалось поверх новой страницы или раздела. Для ссылок-якорей это поведение следует проверить отдельно.
Что делать, если JavaScript не загрузился?
Сохраните доступ к основным ссылкам без скрипта. Не скрывайте навигацию глобально до успешной инициализации интерактивного поведения.
Нужно ли запирать фокус внутри раскрытого меню?
Нет, если панель является обычной навигацией, а не модальным окном. Обязательно обеспечьте видимый и предсказуемый порядок фокуса.
Какие проверки важны помимо ширины экрана?
Проверьте клавиатурное управление, Escape, возврат фокуса, увеличение масштаба, длинные подписи и работу без JavaScript. Также убедитесь, что панель не обрезается на коротком экране.