
Бургер меню является популярным элементом интерфейса, обеспечивающим компактное и интуитивное раскрытие навигации на мобильных и адаптивных сайтах. В этом руководстве мы разберем конкретный подход к его созданию с использованием только HTML и CSS, без применения JavaScript.
Реализация меню начинается с верстки кнопки-бургера, которая обычно состоит из трех горизонтальных линий. Для точного позиционирования линий используется CSS Flexbox или Grid, а анимация при клике обеспечивается свойствами transform и transition. Это позволяет визуально превращать три линии в крестик без сложных скриптов.
Следующий этап – создание скрытой панели навигации, которая появляется при активации кнопки. Рекомендуется использовать position: absolute и overflow: hidden для контроля видимости и плавного раскрытия. Для управления анимацией раскрытия панели применяются свойства height, opacity и transition-timing-function.
Особое внимание следует уделить адаптивности: размеры кнопки и панели навигации должны корректно изменяться при разных разрешениях экрана. Использование медиазапросов (@media) позволит настроить оптимальные размеры и отступы, обеспечивая удобство взаимодействия на мобильных устройствах.
В завершение важно протестировать работу меню во всех популярных браузерах, учитывая различия в рендеринге CSS transitions и transform. Это обеспечит стабильность визуального поведения и отзывчивость интерфейса на всех устройствах.
Разметка HTML: структура кнопки и навигации
Основу бургер меню составляет кнопка и контейнер навигации. Кнопка обычно реализуется через элемент <button> с классом, например, burger-toggle, чтобы её можно было легко идентифицировать для CSS и JavaScript. Внутри кнопки размещают три <span> для линий, каждая с собственным классом: line1, line2, line3. Это позволяет управлять анимацией превращения в крестик при открытии меню.
Контейнер навигации создают через <nav> с классом burger-menu. Внутри размещают <ul> с пунктами <li>, каждый из которых содержит <a> для ссылок на разделы сайта. Такая структура обеспечивает семантическую корректность и удобство управления стилями.
Для скрытия и отображения меню используют дополнительный класс, например, active, который добавляется к <nav> при нажатии на кнопку. Это позволяет с помощью CSS изменять видимость и анимацию элементов без вмешательства в HTML.
Важно добавлять атрибут aria-label к кнопке для доступности, а также aria-expanded для отражения состояния меню. Это повышает совместимость с экранными читалками и улучшает пользовательский опыт для людей с ограничениями.
Пример базовой структуры:
<button class="burger-toggle" aria-label="Открыть меню">
<span class="line1"></span>
<span class="line2"></span>
<span class="line3"></span>
</button>
<nav class="burger-menu">
<ul>
<li><a href="#section1">Раздел 1</a></li>
<li><a href="#section2">Раздел 2</a></li>
<li><a href="#section3">Раздел 3</a></li>
</ul>
</nav>
Такое построение упрощает последующую стилизацию и анимацию через CSS, а также интеграцию с JavaScript для управления открытием и закрытием меню.
Стилизация кнопки: размеры, цвета и положение
Для бургер кнопки оптимальный размер 40–50px по ширине и высоте обеспечивает удобное нажатие на мобильных устройствах. Толщина линий и расстояние между ними обычно 3–4px с интервалом 6–8px.
Цвет кнопки должен сочетаться с фоном навигации. На светлом фоне применяют темно-серый или черный, на темном – белый или светло-серый. Для анимации состояния «открыто» используют контрастный оттенок, например, красный или синий, чтобы пользователь визуально фиксировал изменение.
Положение кнопки задается через position: fixed или absolute в верхнем углу экрана. Стандартное размещение – правый верхний угол, отступ 10–20px от краев. При необходимости на мобильных устройствах можно смещать кнопку на левую сторону для удобства правшей или левшей.
Добавление border-radius 4–6px сглаживает углы, делая кнопку менее агрессивной визуально. Для нажатия рекомендуется cursor: pointer и эффект hover с небольшим изменением прозрачности или цвета линий.
Размер и положение бургер меню должны быть адаптивными: используют media queries для корректировки отступов, чтобы кнопка не перекрывала основной контент и оставалась в пределах досягаемости пальца.
Создание анимации линий бургер-иконки

Для анимации линий бургер-иконки применяются CSS-трансформации и переходы. Каждая линия представлена отдельным элементом или
transform, transition и opacity.
Задайте фиксированную высоту и ширину линий, цвет фона, расстояние между ними через margin или gap. Пример стандартного состояния: три параллельные горизонтальные линии одинаковой толщины и длины.
Для состояния «открыто» меню верхняя и нижняя линии поворачиваются по 45° и -45° соответственно с помощью transform: rotate(45deg) и transform: rotate(-45deg), а средняя линия скрывается через opacity: 0 и сдвиг по translateX.
Используйте свойство transition: all 0.3s ease или отдельные transition для transform и opacity, чтобы обеспечить плавность анимации. Для более точного контроля можно применить transition-delay, чтобы линии появлялись или исчезали с небольшим смещением.
Анимацию активного состояния кнопки привязывают к классу, например .active, который добавляется при клике через JavaScript. В CSS прописываются новые трансформации для каждой линии при наличии этого класса.
Тщательная настройка углов, длительности переходов и расстояний между линиями позволяет создать визуально гармоничную и отзывчивую анимацию, которая сохраняет читаемость и удобство использования на всех устройствах.
Показ и скрытие меню через CSS трансформации
Для плавного появления и скрытия меню используют CSS-свойства transform и transition. Основной подход – изначально скрыть навигационное меню с помощью transform: translateX(-100%) или translateY(-100%) в зависимости от направления появления.
Активируя класс, например .active, изменяют значение трансформации на translateX(0), что делает меню видимым. Для сглаживания анимации задают transition: transform 0.3s ease, регулируя скорость и тип движения.
Если меню вертикальное, лучше использовать translateY, а для бокового – translateX. Это позволяет избежать изменения размеров блока и минимизирует влияние на соседние элементы.
Дополнительно рекомендуется скрывать меню через opacity совместно с transform. Пример: opacity: 0; transform: translateX(-100%) в исходном состоянии и opacity: 1; transform: translateX(0) при открытии. Такой метод обеспечивает плавное проявление и исчезновение без рывков.
Для управления состоянием меню используют CSS-селекторы: #menu.active или .burger:checked ~ .menu. Первый вариант подходит при добавлении/удалении класса через JavaScript, второй – полностью на CSS через чекбокс.
Тестирование трансформаций должно включать разные разрешения экрана. Иногда нужно корректировать transform-origin для правильного направления появления, особенно при сложной анимации с поворотами или масштабированием.
| Свойство | Назначение |
|---|---|
| transform | Сдвиг меню для скрытия/показа |
| transition | Сглаживание анимации |
| opacity | Контроль прозрачности при появлении |
| transform-origin | Точка начала трансформации |
Адаптивность: поведение меню на разных экранах

Для корректной работы бургер меню на устройствах с различной шириной экрана используется медиазапросы CSS. Они позволяют менять стиль и структуру меню в зависимости от размеров окна браузера.
Основные рекомендации:
- Для экранов шириной до 768px отображать только иконку бургер меню, скрывая стандартную навигацию.
- При открытии меню использовать фиксированное позиционирование и ширину 100%, чтобы меню покрывало экран полностью.
- Для планшетов (768–1024px) можно комбинировать видимость некоторых элементов навигации и бургер меню.
Принципы работы:
- Использовать
display: noneдля скрытия элементов на малых экранах иdisplay: block/flexдля их отображения при открытии меню. - Трансформации и переходы (
transform,transition) позволяют плавно раскрывать и скрывать меню без резких скачков. - Размеры шрифтов и отступов внутри меню должны корректироваться через медиазапросы, чтобы элементы не выходили за пределы экрана.
- Иконка бургер меню должна оставаться доступной для касаний с минимальной областью 44×44px для удобства на сенсорных устройствах.
Дополнительные советы:
- Проверять работу меню на разных ориентациях экрана (портретная и ландшафтная).
- Оптимизировать анимацию для плавной работы на устройствах с низкой производительностью.
- Использовать относительные единицы (
em,rem,%) вместо фиксированных пикселей для гибкой адаптации.
Настройка плавности анимации и переходов

Для создания естественного движения элементов меню применяются CSS-свойства transition и animation. Свойство transition позволяет управлять изменением конкретных свойств, например transform, opacity или height, задавая время и кривую ускорения.
Рекомендуется использовать время перехода от 0.3s до 0.5s для открывания меню, чтобы анимация оставалась отзывчивой, но не слишком резкой. Для сложных эффектов, например вращения линий бургер-иконки, можно увеличить длительность до 0.6s с функцией cubic-bezier(0.4, 0, 0.2, 1) для плавного замедления.
Для анимации элементов списка меню применяют последовательные задержки с помощью transition-delay или animation-delay, создавая эффект каскадного появления. Разница задержек 0.05–0.1s обеспечивает естественное движение без визуального рывка.
Важно контролировать свойства overflow и max-height при анимировании высоты контейнера меню. Установка overflow: hidden предотвращает вылезание содержимого и сохраняет плавность.
Для обратного закрытия меню используют те же параметры, меняя порядок задержек или направление анимации через animation-direction: reverse, что обеспечивает симметричное движение элементов при закрытии.
Регулярная проверка анимаций на разных устройствах с разными частотами обновления экрана позволяет подобрать оптимальные значения времени и кривых ускорения, сохраняя отзывчивость интерфейса без задержек или рывков.
Тестирование кликабельности и взаимодействия

Проверка кликабельности начинается с анализа зоны кнопки бургер-меню. Размер активной области должен быть не меньше 40×40 пикселей, чтобы исключить случайные промахи при касании на мобильных устройствах.
Используйте инструмент DevTools для отслеживания изменений состояния элементов при нажатии. Атрибуты :hover и :active должны корректно срабатывать, визуально обозначая, что кнопка реагирует на действия пользователя.
Тестируйте последовательность открытия и закрытия меню при быстрых кликах. Меню не должно зависать, линии бургер-иконки должны анимироваться синхронно с появлением и исчезновением панели навигации.
Проверяйте доступность клавиатурой: кнопка должна реагировать на Enter и пробел, при этом фокус визуально выделен, а меню открывается и закрывается без задержек.
Для мобильных устройств учитывайте инерцию скролла. Меню должно оставаться доступным при движении страницы, а клики на элементы навигации точно срабатывать без смещения.
Фиксируйте результаты тестирования и повторяйте проверки после изменений CSS-трансформаций, чтобы убедиться в стабильности взаимодействия и точности отклика на все виды пользовательских действий.
Вопрос-ответ:
Какие HTML-элементы нужны для базовой структуры бургер меню?
Для базового бургер меню достаточно использовать кнопку для самой иконки и контейнер для навигационных ссылок. Обычно кнопка оформляется через элемент