Collapse cơ bản
Phần này sẽ tìm hiệu kỹ thuật làm xuất hiện/ẩn đi (bật/tắt) một phần tử nội dung nào đó trên trang bằng Js và các lớp CSS của Bootstrap. Chức năng này hoạt động thông qua thư viện Collapse của Bootstrap, thực hiện ẩn hiện một phần tử như sau:
Nếu phần tử nội dung đang ẩn
- Phần tử đó ẩn do sử dụng lớp
.collapse
- Khi kích hoạt hiện thị nó thiết lập cho phần tử đó lớp
.collapsing
và bắt đầu hiệu ứng hiện thị bằng cách thay đổi chiều cao phần tử từ 0 đến chiều cao quy định nội dung - Khi hiệu ứng hoàn thành nó thiết lập phần tử đó lớp
.collapse.show
và phần tử đã xuất hiện
Nếu phần tử nội dung đang hiện thị nó ẩn đi theo quy trình ngược lại
- Phần tử đó hiện thị do lớp
.collapse.show
- Khi kích ẩn nó thiết lập cho phần tử đó lớp
.collapsing
và bắt đầu hiệu ứng ẩn bằng cách thay đổi chiều cao phần tử về 0 - Khi hiệu ứng hoàn thành nó thiết lập phần tử đó lớp
.collapse
và phần tử đã ẩn
Như vậy khi xây dựng các box hiện thị nội dung, muốn box đó mặc định ẩn thì dùng lớp .collapse
nếu muốn mặc định hiện thị thì dùng .collapse .show
Phần tử bấm vào để kích hoạt
Cần có một phần tử bấm vào nó để kích hoạt phần tử nội dung ẩn/hiện. Phần tử HTML này sử dụng bất kỳ loại nào cũng được, nhưng thường dùng phần tử <a>
hoặc <button>
. Cần thiết lập cho phần tử này thuộc tính data-toggle="collapse"
để thư viện tự nhận biết được. Sau đó liên kết nó với phần tử cần ẩn hiện thông qua thuộc tính data-target="id hoặc lớp cần ẩn/hiện"
. Nếu dùng <a>
thì có thể dùng href="id cần ẩn/hiện"
Ví dụ đơn giản
<a href="#boxnoidung" aria-expanded="false" data-toggle="collapse">Bấm vào đây</a> <button aria-expanded="false" class="btn btn-outline-danger" data-toggle="collapse" data-target="#boxnoidung">Bấm vào đây</button> <div class="collapse mt-4" id="boxnoidung"> <div class="card card-body bg-warning"> <p class="card-text">Nội dung hiện thị !</p> </div> </div>Bấm vào đây
Nội dung hiện thị !
Ví dụ trên tạo ra một Box với id
đặt là boxnoidung
, box này bật tắt khi bấm vào link hoặc nút bấm. Do box mặc định là ẩn nên ở link và nút bấm có thêm thuộc tính aria-expanded="false"
Sử dụng accordion - giao diện ẩn/hiện từng nội dung trong tập hợp
Trước tiên tạo tạo ra một Card (đọc cách sử dụng Card) trong Card đó áp dụng kỹ thuật Collapse ở trên - phần ẩn mặc định là .card-body
và phần kích hoạt Collapse là .card-header
Ví dụ đoạn code này giống trường hợp trên, khi bấm vào phần Header, Card sẽ ẩn hiện phần nội dung
Tiêu đề Card
Ví dụ mẫu sử dụng Card
Nội dung văn bản trong .card-body
này sử dụng .card-text
.
<div class="card"> <div class="card-header btn" data-toggle="collapse" data-target="#noidungcard"> Header của Card </div> <div class="card-body collapse" data-toggle="collapse" aria-expanded="false" id="noidungcard"> <h5 class="card-title">Tiêu đề Card</h5> <h6 class="card-subtitle mb-1 text-muted">Ví dụ mẫu sử dụng Card</h6> <p class="card-text">Nội dung văn bản trong <code>.card-body</code> này sử dụng <code>.card-text</code>.</p> <a href="#" class="btn btn-primary">Nút bấm</a> </div> </div>
Bây giờ bạn tạo ra nhiều Card dạng như vậy, sau đó gộp chúng vào một cấu trúc để khi Card này hiện thị thì các Card khác ẩn phần nội dung.
Muốn vậy chỉ cần gộp tất cả các Card lại trong một phần tử là .accordion
và thiết lập nó có một myaccordion
sau đó phần .card-header
của mỗi Card liên hệ tới id
này bằng thuộc tính data-parent="#myaccordion"
Hãy xem kỹ cấu trúc ví dụ sau, có 3 Card chứa trong một phần tử .accordion
với myaccordion
. Lưu ý Card đầu tiên thiết lập mặc định hiện thị nội dung. Bằng cách vậy bạn đã hoàn thành tạo accordion
Tiêu đề Card 1
Ví dụ mẫu sử dụng Card
Nội dung bên trong Card 1 Nội dung bên trong Card 1 Nội dung bên trong Card 1 Nội dung bên trong Card 1
Tiêu đề Card 2
Ví dụ mẫu sử dụng Card
Nội dung văn bản trong .card-body
này sử dụng .card-text
.
Tiêu đề Card 3
Ví dụ mẫu sử dụng Card 3
Nội dung văn bản trong .card-body
này sử dụng .card-text
.
<div class="accordion" id="myaccordion" style="max-width: 320px"> <div class="card"> <div class="card-header btn" data-toggle="collapse" data-target="#noidungcard1" aria-expanded="true" data-parent="#myaccordion"> Header của Card 1 </div> <div class="card-body collapse show" data-toggle="collapse" aria-expanded="false" id="noidungcard1"> <h5 class="card-title">Tiêu đề Card 1</h5> <h6 class="card-subtitle mb-1 text-muted">Ví dụ mẫu sử dụng Card</h6> <p class="card-text">Nội dung bên trong Card 1 Nội dung bên trong Card 1 Nội dung bên trong Card 1 Nội dung bên trong Card 1</p> </div> </div> <div class="card"> <div class="card-header btn" data-toggle="collapse" data-target="#noidungcard2" data-parent="#myaccordion"> Header của Card 2 </div> <div class="card-body collapse" data-toggle="collapse" aria-expanded="false" id="noidungcard2"> <h5 class="card-title">Tiêu đề Card 2</h5> <h6 class="card-subtitle mb-1 text-muted">Ví dụ mẫu sử dụng Card</h6> <p class="card-text">Nội dung văn bản trong <code>.card-body</code> này sử dụng <code>.card-text</code>.</p> <a href="#" class="btn btn-primary">Nút bấm</a> </div> </div> <div class="card"> <div class="card-header btn" data-toggle="collapse" data-target="#noidungcard3" data-parent="#myaccordion"> Header của Card 3 </div> <div class="card-body collapse" data-toggle="collapse" aria-expanded="false" id="noidungcard3"> <h5 class="card-title">Tiêu đề Card 3</h5> <h6 class="card-subtitle mb-1 text-muted">Ví dụ mẫu sử dụng Card 3</h6> <p class="card-text text-danger">Nội dung văn bản trong <code>.card-body</code> này sử dụng <code>.card-text</code>.</p> </div> </div> </div>