Hoe te maken: vouwbare inhoud/accordeon

Leer hoe je een accordeon (vouwbare inhoud) maakt.

Accordeon

Het accordeon is zeer nuttig wanneer je wilt wisselen tussen het verbergen en weergeven van grote hoeveelheden inhoud:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Probeer het zelf

Maak een accordeon

Eerste stap - Voeg HTML toe:

<button class="accordion">Section 1</button>
<div class="panel">
  <p>Lorem ipsum...</p>
</div>
<button class="accordion">Section 2</button>
<div class="panel">
  <p>Lorem ipsum...</p>
</div>
<button class="accordion">Section 3</button>
<div class="panel">
  <p>Lorem ipsum...</p>
</div>

Tweede stap - Voeg CSS toe:

Stel de stijl van het accordeon in

/* Stel de stijl in voor de knoppen die het openen en sluiten van het accordeon paneel regelen */
.accordion {
  background-color: #eee;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  text-align: left;
  border: none;
  outline: none;
  transition: 0.4s;
}
/* Voeg achtergrondkleur toe aan de knop als deze wordt aangeklikt (klasse .active toegevoegd met JS), en als de muis erover hangt (hover) */
.active, .accordion:hover {
  background-color: #ccc;
}
/* Voeg stijl toe aan het accordeon paneel. Let op: het is standaard verborgen */
.panel {
  padding: 0 18px;
  background-color: white;
  display: none;
  overflow: hidden;
}

Derde stap - Voeg JavaScript toe:

var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
  acc[i].addEventListener("click", function() {
    /* Schakel de toevoeging en verwijdering van de "active" klasse in of uit om de knoppen van het control paneel te accentueren */
    this.classList.toggle("active");
    /* Schakel de actieve paneelweergave in of uit */
    var panel = this.nextElementSibling;
    if (panel.style.display === "block") {
      panel.style.display = "none";
    } else {
      panel.style.display = "block";
    }
  });
}

Probeer het zelf

动画手风琴(向下滑动)

要制作动画手风琴,请向面板类添加 max-height: 0overflow: hidden 以及 max-height 属性的过渡效果。

然后,使用 JavaScript 根据不同屏幕尺寸的面板高度来计算并设置 max-height,以便实现内容的向下滑动效果:

<style>
.panel {
  padding: 0 18px;
  background-color: white;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s ease-out;
}
</style>
<script>
var acc = document.getElementsByClassName("accordion");
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";
    }
  });
}
</script>

Probeer het zelf

Voeg icoon toe

Voeg een symbool toe aan elke knop om aan te geven of het vouwbare inhoud geopend of gesloten is:

.accordion:after {
  content: '\02795'; /* “加号”(+)的 Unicode 字符 */
  font-size: 13px;
  color: #777;
  float: right;
  margin-left: 5px;
}
.active:after {
  content: "\2796"; /* “减号”(-)的 Unicode 字符 */
}

Probeer het zelf