چگونه ایجاد شود: محتوای قابل فروپاشی/آکورده

آموزش ایجاد پینو (محتوای قابل تا کردن).

پینو

پینو بسیار مفید است وقتی می‌خواهید بین نمایش و مخفی کردن محتوای زیادی جابجا شوید:

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.

آزمایش کنید

پایان دادن به پیانو

مرحله اول - اضافه کردن HTML:

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

مرحله دوم - اضافه کردن CSS:

تنظیم استایل پیانو

/* تنظیم استایل برای دکمه‌هایی که برای باز و بستن پنل پیانو استفاده می‌شوند */
.accordion {
  background-color: #eee;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  text-align: left;
  border: none;
  outline: none;
  transition: 0.4s;
}
/* اگر دکمه کلیک شود (با استفاده از JS به آن کلاس .active اضافه شود)، پس رنگ پس‌زمینه آن را اضافه کنید و همچنین وقتی ماوس روی آن قرار می‌گیرد (لغزش) */
.active, .accordion:hover {
  background-color: #ccc;
}
/* اضافه کردن استایل به پنل پیانو. توجه: به صورت پیش‌فرض مخفی است */
.panel {
  padding: 0 18px;
  background-color: white;
  display: none;
  overflow: hidden;
}

مرحله سوم - اضافه کردن JavaScript:

var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
  acc[i].addEventListener("click", function() {
    /* جابجایی اضافه کردن و حذف "active" از کلاس، برای برجسته کردن دکمه‌های پنل کنترل */
    this.classList.toggle("active");
    /* جابجایی نمایش و مخفی کردن پنل فعال */
    var panel = this.nextElementSibling;
    if (panel.style.display === "block") {
      panel.style.display = "none";
    } else {
      panel.style.display = "block";
    }
  });
}

آزمایش کنید

دست‌فروشی موزیکال (به سمت پایین اسکرول کردن)

برای ساخت دست‌فروشی موزیکال، به کلاس پنل max-height: 0وoverflow: 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 字符 */
}

آزمایش کنید