Tip Cepat: Cara Menyesuaikan Komponen Accordion Bootstrap 4
() 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:



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.