РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)

Аккордеон на чистом CSS (без JavaScript)

Аккордеон - это UI-компонент, который позволяет скрывать и показывать контент при клике на заголовок. Обычно для этого используют JavaScript, но мы реализуем функциональность только на CSS, используя чекбоксы и псевдоклассы.

HTML структура

Создадим базовую разметку нашего аккордеона:

<div class="accordion"> <div class="accordion-item"> <input type="checkbox" id="item1" class="accordion-input"> <label for="item1" class="accordion-title">Section 1</label> <div class="accordion-content"> <p>Content for section 1.</p> </div> </div> <div class="accordion-item"> <input type="checkbox" id="item2" class="accordion-input"> <label for="item2" class="accordion-title">Section 2</label> <div class="accordion-content"> <p>Content for section 2.</p> </div> </div> </div>

Базовые стили

Добавим основные CSS стили для нашего аккордеона:

.accordion { width: 100%; max-width: 600px; margin: 0 auto; font-family: Arial, sans-serif; } .accordion-item { margin-bottom: 10px; border: 1px solid #ddd; border-radius: 4px; overflow: hidden; } .accordion-input { display: none; } .accordion-title { display: block; padding: 15px; background: #f8f8f8; cursor: pointer; font-weight: bold; transition: background 0.3s; } .accordion-title:hover { background: #e8e8e8; } .accordion-content { max-height: 0; padding: 0 15px; overflow: hidden; transition: max-height 0.3s ease-out; background: white; }

Логика работы

Теперь добавим логику раскрытия/закрытия с помощью псевдокласса :checked:

.accordion-input:checked ~ .accordion-content { max-height: 500px; padding: 15px; } .accordion-input:checked ~ .accordion-title { background: #e0e0e0; }

Здесь мы используем:

  • свойство max-height для плавной анимации раскрытия
  • комбинатор ~ для выбора соседнего элемента
  • псевдокласс :checked для отслеживания состояния чекбокса

Добавляем иконки

Улучшим наш аккордеон, добавив иконки плюса/минуса с помощью псевдоэлемента :after:

.accordion-title::after { content: '+'; float: right; font-weight: bold; } .accordion-input:checked ~ .accordion-title::after { content: '-'; }

Итоговый код

Вот полный код нашего CSS-аккордеона:

<div class="accordion"> <div class="accordion-item"> <input type="checkbox" id="item1" class="accordion-input"> <label for="item1" class="accordion-title">Section 1</label> <div class="accordion-content"> <p>Content for section 1.</p> </div> </div> <div class="accordion-item"> <input type="checkbox" id="item2" class="accordion-input"> <label for="item2" class="accordion-title">Section 2</label> <div class="accordion-content"> <p>Content for section 2.</p> </div> </div> </div> .accordion { width: 100%; max-width: 600px; margin: 0 auto; font-family: Arial, sans-serif; } .accordion-item { margin-bottom: 10px; border: 1px solid #ddd; border-radius: 4px; overflow: hidden; } .accordion-input { display: none; } .accordion-title { display: block; padding: 15px; background: #f8f8f8; cursor: pointer; font-weight: bold; transition: background 0.3s; } .accordion-title:hover { background: #e8e8e8; } .accordion-title::after { content: '+'; float: right; font-weight: bold; } .accordion-content { max-height: 0; padding: 0 15px; overflow: hidden; transition: max-height 0.3s ease-out; background: white; } .accordion-input:checked ~ .accordion-content { max-height: 500px; padding: 15px; } .accordion-input:checked ~ .accordion-title { background: #e0e0e0; } .accordion-input:checked ~ .accordion-title::after { content: '-'; }

:

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить