Как с помощью CSS создать «бургер-меню» для мобильной версии сайта без использования JavaScript?

Создать бургер-меню без JavaScript вполне реально — для этого используется классическая CSS-техника на основе скрытого элемента « и псевдокласса `:checked`. Рассмотрим подробно, как это работает.

## Принцип работы

Когда пользователь кликает на иконку «бургера», на самом деле он кликает на `

## HTML-структура

html

## CSS-стили

css
/* Скрываем чекбокс */
.burger-checkbox {
display: none;
}

/* Иконка бургера */
.burger-icon {
display: none;
flex-direction: column;
cursor: pointer;
gap: 5px;
}

.burger-icon span {
display: block;
width: 25px;
height: 3px;
background-color: #333;
transition: all 0.3s ease;
}

/* Меню по умолчанию */
.nav-menu {
list-style: none;
display: flex;
gap: 20px;
}

/* Мобильная версия */
@media (max-width: 768px) {
.burger-icon {
display: flex;
}

.nav-menu {
display: none;
flex-direction: column;
position: absolute;
top: 60px;
left: 0;
width: 100%;
background: #fff;
padding: 20px;
}

/* Показываем меню при активном чекбоксе */
.burger-checkbox:checked ~ .nav-menu {
display: flex;
}

/* Анимация иконки при открытии */
.burger-checkbox:checked ~ .burger-icon span:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}

.burger-checkbox:checked ~ .burger-icon span:nth-child(2) {
opacity: 0;
}

.burger-checkbox:checked ~ .burger-icon span:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
}

## Ключевые моменты

1. **Селектор `~` (general sibling)** — позволяет выбрать элементы, следующие за чекбоксом на одном уровне DOM.
2. **Псевдокласс `:checked`** — срабатывает, когда чекбокс отмечен, что имитирует логику переключения без JS.
3. **Анимация иконки** — три полоски трансформируются в крестик через `transform` и `opacity`.
4. **`transition`** — добавляет плавность переходу, улучшая UX.

## Ограничения метода

— Меню не закрывается при клике вне его области без JS.
— Сложнее управлять доступностью (ARIA-атрибуты требуют JS для динамического обновления).
— Не работает с клавиатурной навигацией так же хорошо, как JS-решение.

Тем не менее, для простых сайтов и лендингов этот подход полностью рабочий и не требует подключения скриптов.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.