Напишем пример JavaScript-аккордеона с плавной анимацией. Аккордеон — это тип элемента пользовательского интерфейса, который позволяет пользователям отображать или скрывать дополнительное содержимое, кликая на вкладки аккордеона.

Пример, который мы сделаем:

HTML:

<div class="accordion-container">
  <button class="accordion-tab">Accordion Tab 1</button>
  <div class="accordion-panel">
    <p>Accordion Content 1</p>
  </div>

  <button class="accordion-tab">Accordion Tab 2</button>
  <div class="accordion-panel">
    <p>Accordion Content 2</p>
  </div>

  <button class="accordion-tab">Accordion Tab 3</button>
  <div class="accordion-panel">
    <p>Accordion Content 3</p>
  </div>
</div>

CSS:

/* Контейнер для аккордеона */
.accordion-container {
  width: 500px;
  margin: 0 auto;
}

/* Стили для вкладок аккордеона */
.accordion-tab {
  background-color: #f2f2f2;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  text-align: left;
  outline: none;
  font-size: 15px;
  transition: 0.4s;
}

/* Стили для активной вкладки */
.active,
.accordion-tab:hover {
  background-color: #ccc;
}

/* Стили для панели аккордеона */
.accordion-panel {
  padding: 0 18px;
  background-color: white;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s ease-out;
}

JavaScript:

var acc = document.getElementsByClassName("accordion-tab");
var i;

for (i = 0; i < acc.length; i++) {
  acc[i].addEventListener("click", function () {
    this.classList.toggle("active");
    var panel = this.nextElementSibling;
    if (panel.style.maxHeight) {
      panel.style.maxHeight = null;
    } else {
      panel.style.maxHeight = panel.scrollHeight + "px";
    }
  });
}

В этом коде вкладки-аккордеоны — это кнопки с именем класса accordion-tab, а содержимое, которое нужно показать или скрыть, содержится в элементах div с именем класса accordion-panel. CSS стилизует внешний вид аккордеона, включая вкладки аккордеона, активную вкладку и панели аккордеона. Код JavaScript динамически обновляет свойство max-height панелей аккордеона при нажатии на вкладку, чтобы открыть или закрыть панель.

 

Комментарии

0

Без регистрации и смс