Advertisement
  1. Web Design
  2. HTML/CSS
  3. Bootstrap

Tip Cepat: Cara Menyesuaikan Komponen Accordion Bootstrap 4

Scroll to top
Read Time: 4 min

() translation by (you can also view the original English article)

Pada tips singkatt ini, kita akan membuat accordion Bootstrap 4, menyesuaikannya dengan beberapa perubahan CSS, dan menerapkan beberapa penyesuaian JavaScript. Ayo mulai!

Catatan: Tutorial ini mengasumsikan Anda memiliki banyak keakraban dengan Bootstrap 4.

1. Sertakan Icon Font Awesome

Untuk keperluan tutorial ini, di luar file CSS dan JavaScript Bootstrap yang diperlukan, saya juga memasukkan paket ikon Font Awesome ke dalam pena kita. Kita dapat melakukannya dengan menautkan ke Font Awesome CDN langsung dari pengaturan CSS kita:

Adding Font Awesome into our penAdding Font Awesome into our penAdding Font Awesome into our pen

2. Bangun Accordion Sederhana

Untuk membuat accordion kita, kita akan mengandalkan beberapa contoh kode untuk collapse component, disediakan oleh Bootstrap.

Accordion kita akan berisi tiga elemen yang dapat dilipat:

1
<div id="accordion" class="myaccordion">
2
  <div class="card">...</div>
3
  <div class="card">...</div>
4
  <div class="card">...</div>
5
</div>

Konten dalam item yang dapat dilipat pertama adalah sebagai berikut: div header berisi heading dan tombol, dan div kedua dengan apa pun isi body (daftar dalam hal ini).

1
<div class="card-header" id="headingOne">
2
  <h2 class="mb-0">
3
    <button class="d-flex align-items-center justify-content-between btn btn-link collapsed" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
4
      Undergraduate Studies
5
      <span class="fa-stack fa-sm">
6
        <i class="fas fa-circle fa-stack-2x"></i>
7
        <i class="fas fa-plus fa-stack-1x fa-inverse"></i>
8
      </span>
9
    </button>
10
  </h2>
11
</div>
12
<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordion">
13
  <div class="card-body">
14
    <ul>
15
      <li>Computer Science</li>
16
      <li>Economics</li>
17
      <li>Sociology</li>
18
      <li>Nursing</li>
19
      <li>English</li>
20
    </ul>
21
  </div>
22
</div>

Perhatikan bahwa kita menumpuk banyak ikon di tombol kita, berkat gaya dukungan yang dibundel dengan Font Awesome.

Setelah selesai, kita kemudian menambahkan konten untuk dua item yang collapsible.

3. Tambahkan Beberapa Style Dasar

Selanjutnya kita tentukan beberapa aturan CSS untuk komponen kita. Tidak ada yang terlalu mewah, hanya beberapa warna dasar dan sizing styles untuk membuat sesuatu terlihat sedikit lebih unik.

1
.myaccordion {
2
  max-width: 500px;
3
  margin: 50px auto;
4
  box-shadow: 0 0 1px rgba(0,0,0,0.1);
5
}
6
7
.myaccordion .card,
8
.myaccordion .card:last-child .card-header {
9
  border: none;
10
}
11
12
.myaccordion .card-header {
13
  border-bottom-color: #EDEFF0;
14
  background: transparent;
15
}
16
17
.myaccordion .fa-stack {
18
  font-size: 18px;
19
}
20
21
.myaccordion .btn {
22
  width: 100%;
23
  font-weight: bold;
24
  color: #004987;
25
  padding: 0;
26
}
27
28
.myaccordion .btn-link:hover,
29
.myaccordion .btn-link:focus {
30
  text-decoration: none;
31
}
32
33
.myaccordion li + li {
34
  margin-top: 10px;
35
}

Kerja bagus! Sejauh ini komponen kita terlihat seperti ini:

4. Kustomisasi

Dengan HTML dan CSS di tempatnya, mari kita lihat beberapa penyesuaian berguna yang dapat kita tambahkan ke accordion kita.

Toggle Icons

Secara default, kontrol kita menyertakan ikon "plus".

Setiap kali sebuah kontrol diklik, alangkah baiknya jika ikonnya beralih antara menjadi ikon "plus" atau "minus", tergantung pada keadaan elemen yang dapat dilipat.

Untuk mencapai ini, kita dapat memanfaatkan event show.bs.collapse dan hide.bs.collapse.

Ini kode JavaScript yang diperlukan, yang mengalihkan kelas pada ikon <i> kita:

1
$("#accordion").on("hide.bs.collapse show.bs.collapse", e => {
2
  $(e.target)
3
    .prev()
4
    .find("i:last-child")
5
    .toggleClass("fa-minus fa-plus");
6
});

Dan inilah demo yang sesuai:

Tetapkan Status Default

Dalam contoh kita, semua collapsible element ditutup untuk memulai.

Tetapi katakanlah bahwa kita ingin elemen yang collapsible pertama dibuka secara default. Untuk melakukannya, kita harus menambahkan kelas show ke dalamnya, lalu pada elemen button terkait (control) kita menghapus kelas collapsed dan, untuk accessibility, set aria-extended="true".

Inilah persetujuan kita dengan perubahan yang dibuat:

Beberapa Elemen yang Collapsible Dibuka

Terkadang kita mungkin ingin agar beberapa elemen yang collapsible terbuka pada saat yang bersamaan. Kita dapat mencapai ini dengan menghapus atribut data-parent dari semua elemen yang collapsible.

Inilah demo dengan behavior itu:

Animasi Posisi

Pertimbangkan skenario berikut: bayangkan ada banyak konten di dalam elemen yang dapat dilipat. Pada titik tertentu Anda membaca teks di dalam elemen kedua, setelah itu Anda mengklik untuk melihat konten dari item ketiga yang dapat dilipat. Item kedua ditutup lagi, jadi sekarang, untuk melihat awal elemen ketiga, Anda harus menggulir kembali. Ugh, bukan UX yang bagus.

Begini tampilannya:

Salah satu perbaikan sederhana, yang mengambil keuntungan dari event yang shown.bs.collapse, adalah meluncurkan animasi gulir ke posisi teratas dari kontrol terkait.

Untuk melakukan itu kita menambahkan kode JavaScript berikut ke demo sebelumnya:

1
$("#accordion").on("shown.bs.collapse", e => {
2
  $("html, body").animate(
3
    {
4
      scrollTop: $(e.target)
5
        .prev()
6
        .offset().top
7
    },
8
    400
9
  );
10
});

Sekarang mari kita periksa lagi!

Kesimpulan

Dalam tutorial singkat ini kita bermain dengan komponen collapse Bootstrap 4, membuat beberapa contoh accordion, mencakup beberapa persyaratan umum, dan membuat beberapa solusi. Anda sekarang dapat pergi dan menerapkan pengetahuan yang diperoleh hari ini di proyek Bootstrap mendatang Anda.

Jika Anda pernah membuat ekstensi berguna lainnya untuk accordion Bootstrap, beri tahu kami di komentar di bawah.

Link yang berguna

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.