如何创建:可折叠内容/手风琴

Matututuhan kung paano bumuo ng handpan (maikling nilalaman na maaaring ipilipil).

Handpan

Kapag nais mong palitan ang paghahide at pagpapakita ng malaking halaga ng nilalaman, ang handpan ay napaka-kapaki-pakinabang:

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.

亲自试一试

Buwbuo ng handpan

Unang hakbang - Magdagdag ng HTML:

<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>

Ikalawang hakbang - Magdagdag ng CSS:

Magset ng estilo ng handpan

/* Magset ng estilo para sa mga pindutan na magbukas at magbukas ang handpan panel */
.accordion {
  background-color: #eee;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  text-align: left;
  border: none;
  outline: none;
  transition: 0.4s;
}
/* Kung pinindutin ang pindutan (dagdag ng klase .active gamit ang JS), magdagdag ng kulay ng background at kapag may mouse hover (hover) */
.active, .accordion:hover {
  background-color: #ccc;
}
/* Magdagdag ng estilo sa handpan panel. Pag-aalala: Ang default ay nakahide. */
.panel {
  padding: 0 18px;
  background-color: white;
  display: none;
  overflow: hidden;
}

Ikatlong hakbang - Magdagdag ng JavaScript:

var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
  acc[i].addEventListener("click", function() {
    /* Pagbabago ng pagdagdag at pag-alis ng klase "active", upang pagpahighlight ang mga pindutan ng kontrol panel */
    this.classList.toggle("active");
    /* Pagbabago ng paghahide at pagpapakita ng aktibong panel */
    var panel = this.nextElementSibling;
    if (panel.style.display === "block") {
      panel.style.display = "none";
    } else {
      panel.style.display = "block";
    }
  });
}

亲自试一试

動畫手風琴(向下滑動)

要製作動畫手風琴,請向面板類添加 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>

亲自试一试

添加圖標

在每個按鈕上添加一個符號,以指示可折疊內容是否打開或關閉:

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

亲自试一试