Javascript как сделать раскрывающийся блок

Обучимся создавать раскрывающийся блок на Javascript с примером. Узнаем, какие инструменты использовать и как правильно их сочетать, чтобы получить желаемый результат.

Для создания раскрывающегося блока в JavaScript нам понадобится использовать HTML, CSS и JavaScript. Начнем с нашего HTML-кода.

<div class="accordion">
  <div class="accordion-item">
    <button class="btn">Заголовок 1</button>
    <div class="accordion-item-content">
      <p>Содержимое блока 1</p>
    </div>
  </div>
  <div class="accordion-item">
    <button class="btn">Заголовок 2</button>
    <div class="accordion-item-content">
      <p>Содержимое блока 2</p>
    </div>
  </div>
</div>

В приведенном выше примере мы определили два блока с заголовками, которые будут нашими кнопками для раскрытия и скрытия их содержимого, а также задали классы для их стилизации. Теперь давайте быстро пройдемся по CSS.

.accordion {
  border-radius: 8px;
}

.accordion-item {
  border-radius: 8px;
  border: 1px solid #d3d3d3;
  margin-bottom: 10px;
}

.accordion-item-content {
  padding: 10px;
  display: none;
}

.btn {
  border: none;
  font-family: sans-serif;
  font-size: 14px;
  color: #333;
  background: #f0f0f0;
  padding: 10px;
  display: block;
  width: 100%;
  text-align: left;
  cursor: pointer;
  border-radius: 8px;
}

В данном примере мы задали параметры стилизации для нашего блока, а также скрыли блок с содержимым по умолчанию. Теперь мы можем перейти к JavaScript.

Задание события на кнопку

Для начала мы должны инициализировать нашу кнопку. Для этого мы используем метод querySelector():

const btn = document.querySelector('.btn');

Затем мы задаем событие на нашу кнопку с помощью метода addEventListener():

btn.addEventListener('click', function () {
  // код
});

Скрытие и раскрытие блока

Теперь мы можем написать код для отображения и скрытия нашего содержимого. Для этого мы используем querySelector() для получения блока со содержимым:

const content = this.nextElementSibling;

Затем мы проверяем значение свойства style.display блока с содержимым. Если значение равно none, мы раскрываем блок, иначе мы его скрываем:

if (content.style.display === 'none') {
  content.style.display = 'block';
} else {
  content.style.display = 'none';
}

Это все! Вы можете добавить дополнительный функционал, например анимацию, используя библиотеку CSS, такую как Animate.css.

Ответы (0)