Главная | Все статьи | Дневник студента

Аккордеон на чистом CSS

Время чтения статьи ~1 минута
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Аккордеон на чистом CSS главное изображение

В этой статье рассказазываю как создать аккордеон, используя только стили.

Разметка

input.question-input(id='question' type='checkbox')
label.question-label(for='question') Click me?
.answer Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque officia ipsum quam sequi! Ratione dolorem ad quam maxime a facere voluptate? Nulla dignissimos iure dolorum, a fuga excepturi sunt modi!

Вместо добавления дополнительного класса будем ориентироваться на псевдокласс :checked элемента input.

Стили

.question-input {
display: none;
}

.answer {
height: 0;
overflow: hidden;
transition: 0.5s;
}

.question-input:checked + .question-label + .answer {
height: auto;
padding: 10px 0;
}

Разберем по частям

Скрываем чекбокс:

.question-input {
display: none;
}

Правильней это делать через паттерн visually hidden, но для учебного примера хватит.

Задаем стили для ответа:

.answer {
 // обнуляем высоту
height: 0;
 // скрываем блок
overflow: hidden;
 // задаем длительность анимации
transition: 0.5s;
}

И описываем правила для раскрытого аккордеона:

.question-input:checked + .question-label + .answer {
height: auto;
padding: 10px 0;
}

Пара слов об анимации — она не самая удачная:

Связано это с тем, что height: auto; нельзя анимировать через transition, необходимо знать точное значение. Именно поэтому, в качестве хака, мы используем padding.

Если такая анимация вас устраивает — считайте вам повезло, а если она и вовсе не нужна — читайте следующую статью про создание аккордеона на чистом HTML.

Актуальное демо смотрите в моем codepen.

Аватар пользователя filimonov
filimonov 25 февраля 2022
1
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 28 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 28 ноября