Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про HTML: accordion, checkbox hack, CSS transition, HTML label, no JavaScript

Как реализовать анимированный аккордеон без JavaScript, используя HTML-элемент <label>, <input type="checkbox"> и CSS-переход?

Вопрос проверяет понимание реализации анимированного аккордеона с использованием только HTML и CSS, без JavaScript, через чекбокс и CSS-переходы.

Короткий ответ

Аккордеон без JavaScript реализуется с помощью скрытого чекбокса и метки. Чекбокс хранит состояние открытия/закрытия, а CSS-селектор :checked управляет отображением контента. Для анимации используется CSS-переход свойства max-height или transform. Это простой и доступный способ создания интерактивных элементов без скриптов.

Длинный ответ

Принцип работы аккордеона на CSS

Аккордеон без JavaScript строится на "чекбокс-хаке": скрытый элемент <input type="checkbox"> хранит состояние (открыт/закрыт), а связанный с ним <label> служит видимой кнопкой. Когда пользователь кликает по метке, чекбокс переключается, и CSS-селектор :checked применяет стили к соседним элементам, показывая или скрывая контент.

Базовая структура HTML

<div class="accordion">
  <input type="checkbox" id="item1" class="accordion-input">
  <label for="item1" class="accordion-label">Заголовок 1</label>
  <div class="accordion-content">
    <p>Содержимое панели.</p>
  </div>
</div>

CSS для анимации

Для плавного открытия используется свойство max-height с переходом. Изначально контент скрыт (max-height: 0; overflow: hidden), а при активации чекбокса — расширяется до большого значения.

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}

.accordion-input:checked ~ .accordion-content {
  max-height: 200px; /* достаточно большое значение */
}

Применение и ограничения

Такой подход подходит для простых интерфейсов, где не требуется сложная логика или множественные открытые панели. Для аккордеона с единственной открытой секцией можно использовать <input type="radio"> с одинаковым именем. Однако метод не поддерживает анимацию высоты точно (из-за фиксированного max-height) и неудобен для динамического контента.

Вывод

Чисто CSS-аккордеон — отличное решение для статичных страниц, где важна производительность и отсутствие зависимостей от JavaScript. Он прост в реализации, но ограничен в гибкости и точности анимации.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • HTML

    HTML

  • CSS

    CSS

Ключевые слова

#accordion

#checkbox hack

#CSS transition

#HTML label

#no JavaScript

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию