ทรุด
สลับการมองเห็นเนื้อหาในโครงการของคุณด้วยคลาสสองสามคลาสและปลั๊กอิน JavaScript ของเรา
มันทำงานอย่างไร
ปลั๊กอิน JavaScript ยุบใช้เพื่อแสดงและซ่อนเนื้อหา ปุ่มหรือจุดยึดถูกใช้เป็นทริกเกอร์ที่จับคู่กับองค์ประกอบเฉพาะที่คุณสลับ การยุบองค์ประกอบจะทำให้ค่าปัจจุบันเคลื่อนไหวheight
จากค่าปัจจุบัน0
เป็น เมื่อพิจารณาว่า CSS จัดการกับภาพเคลื่อนไหวอย่างไร คุณไม่สามารถใช้padding
กับ.collapse
องค์ประกอบได้ ให้ใช้คลาสเป็นองค์ประกอบการห่ออิสระแทน
prefers-reduced-motion
คิวรีสื่อ ดู
ส่วนการเคลื่อนไหวที่ลดลงของเอกสารการช่วยสำหรับการเข้าถึงของเรา
ตัวอย่าง
คลิกปุ่มด้านล่างเพื่อแสดงและซ่อนองค์ประกอบอื่นผ่านการเปลี่ยนแปลงคลาส:
.collapse
ซ่อนเนื้อหา.collapsing
ถูกนำไปใช้ในระหว่างช่วงการเปลี่ยนภาพ.collapse.show
แสดงเนื้อหา
โดยทั่วไป เราแนะนำให้ใช้ปุ่มที่มีdata-bs-target
แอตทริบิวต์ แม้ว่าจะไม่แนะนำจากมุมมองเชิงความหมาย คุณยังสามารถใช้ลิงก์ที่มีhref
แอตทริบิวต์ (และrole="button"
) ได้ ในทั้งสองกรณีdata-bs-toggle="collapse"
จำเป็นต้องมี
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Button with data-bs-target
</button>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-body">
Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
หลายเป้าหมาย
A <button>
หรือ<a>
สามารถแสดงและซ่อนองค์ประกอบหลายรายการโดยอ้างอิงด้วยตัวเลือกในองค์ประกอบhref
หรือdata-bs-target
แอตทริบิวต์ หลาย รายการ <button>
หรือ<a>
สามารถแสดงและซ่อนองค์ประกอบได้หากแต่ละรายการอ้างอิงด้วยhref
หรือdata-bs-target
แอตทริบิวต์
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
</div>
การเข้าถึง
อย่าลืมเพิ่มaria-expanded
องค์ประกอบการควบคุม คุณลักษณะนี้แสดงให้เห็นอย่างชัดเจนถึงสถานะปัจจุบันขององค์ประกอบที่ยุบได้ซึ่งเชื่อมโยงกับการควบคุมกับโปรแกรมอ่านหน้าจอและเทคโนโลยีช่วยเหลือที่คล้ายคลึงกัน หากองค์ประกอบที่ยุบได้ถูกปิดโดยค่าเริ่มต้น แอตทริบิวต์บนองค์ประกอบการควบคุมควรมีค่าaria-expanded="false"
เป็น หากคุณได้ตั้งค่าให้เปิดองค์ประกอบที่ยุบได้โดยค่าเริ่มต้นโดยใช้show
คลาส ให้ตั้งค่าaria-expanded="true"
บนตัวควบคุมแทน ปลั๊กอินจะสลับแอตทริบิวต์นี้โดยอัตโนมัติในการควบคุมโดยพิจารณาจากการเปิดหรือปิดองค์ประกอบที่ยุบได้ (ผ่าน JavaScript หรือเนื่องจากผู้ใช้เรียกองค์ประกอบการควบคุมอื่นที่เชื่อมโยงกับองค์ประกอบที่ยุบได้เดียวกัน) หากองค์ประกอบ HTML ขององค์ประกอบการควบคุมไม่ใช่ปุ่ม (เช่น<a>
หรือ<div>
) แอตทริบิวต์role="button"
ควรเพิ่มองค์ประกอบ
หากองค์ประกอบการควบคุมของคุณกำหนดเป้าหมายไปยังองค์ประกอบที่ยุบได้เพียงองค์ประกอบเดียว เช่นdata-bs-target
แอตทริบิวต์ชี้ไปที่id
ตัวเลือก คุณควรเพิ่มaria-controls
แอตทริบิวต์ดังกล่าวไปยังองค์ประกอบควบคุม ซึ่งประกอบด้วยid
องค์ประกอบที่ยุบได้ โปรแกรมอ่านหน้าจอสมัยใหม่และเทคโนโลยีช่วยเหลือที่คล้ายคลึงกันใช้ประโยชน์จากแอตทริบิวต์นี้เพื่อให้ผู้ใช้มีทางลัดเพิ่มเติมเพื่อนำทางไปยังองค์ประกอบที่ยุบได้โดยตรง
โปรดทราบว่าการใช้งานปัจจุบันของ Bootstrap ไม่ได้ครอบคลุมการโต้ตอบของแป้นพิมพ์ทางเลือก ต่างๆ ที่อธิบายไว้ใน รูปแบบหีบเพลง WAI-ARIA Authoring Practices 1.1คุณจะต้องรวมสิ่งเหล่านี้ด้วย JavaScript ที่กำหนดเอง
ซาส
ตัวแปร
$transition-collapse: height .35s ease;
ชั้นเรียน
คลาสทรานซิชันการยุบสามารถพบได้scss/_transitions.scss
เนื่องจากใช้ร่วมกันในหลายองค์ประกอบ (การยุบและหีบเพลง)
.collapse {
&:not(.show) {
display: none;
}
}
.collapsing {
height: 0;
overflow: hidden;
@include transition($transition-collapse);
}
การใช้งาน
ปลั๊กอินยุบใช้คลาสสองสามคลาสเพื่อจัดการกับงานหนัก:
.collapse
ซ่อนเนื้อหา.collapse.show
แสดงเนื้อหา.collapsing
ถูกเพิ่มเมื่อการเปลี่ยนแปลงเริ่มต้น และลบออกเมื่อเสร็จสิ้น
คลาสเหล่านี้สามารถพบได้ใน_transitions.scss
.
ผ่านแอตทริบิวต์ข้อมูล
เพียงเพิ่มdata-bs-toggle="collapse"
และ a data-bs-target
ให้กับองค์ประกอบเพื่อกำหนดการควบคุมองค์ประกอบที่ยุบได้หนึ่งองค์ประกอบขึ้นไปโดยอัตโนมัติ แอตทริบิวต์data-bs-target
ยอมรับตัวเลือก CSS เพื่อปรับใช้การยุบ อย่าลืมเพิ่มคลาสcollapse
ลงในองค์ประกอบที่ยุบได้ หากคุณต้องการให้เปิดโดยค่าเริ่มต้น ให้เพิ่มคลาสshow
เพิ่มเติม
หากต้องการเพิ่มการจัดการกลุ่มแบบหีบเพลงลงในพื้นที่ที่ยุบได้ ให้เพิ่มแอตทริบิวต์data-bs-parent="#selector"
ข้อมูล อ้างถึงการสาธิตเพื่อดูการดำเนินการนี้
ผ่านจาวาสคริปต์
เปิดใช้งานด้วยตนเองด้วย:
var collapseElementList = [].slice.call(document.querySelectorAll('.collapse'))
var collapseList = collapseElementList.map(function (collapseEl) {
return new bootstrap.Collapse(collapseEl)
})
ตัวเลือก
ตัวเลือกสามารถส่งผ่านแอตทริบิวต์ข้อมูลหรือ JavaScript สำหรับแอ็ตทริบิวต์ data ให้ผนวกชื่ออ็อพชันต่อท้ายdata-bs-
เช่นเดียวกับในdata-bs-parent=""
.
ชื่อ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
parent |
ตัวเลือก | วัตถุ jQuery | องค์ประกอบ DOM | false |
หากระบุพาเรนต์ องค์ประกอบที่ยุบได้ทั้งหมดภายใต้พาเรนต์ที่ระบุจะถูกปิดเมื่อแสดงรายการที่ยุบได้นี้ (คล้ายกับพฤติกรรมหีบเพลงแบบดั้งเดิม - ขึ้นอยู่กับcard ชั้นเรียน) ต้องตั้งค่าแอตทริบิวต์บนพื้นที่เป้าหมายที่ยุบได้ |
toggle |
บูลีน | true |
สลับองค์ประกอบที่ยุบได้ในการเรียกใช้ |
วิธีการ
วิธีการและการเปลี่ยนแบบอะซิงโครนัส
เมธอด API ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้นสุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น
เปิดใช้งานเนื้อหาของคุณเป็นองค์ประกอบที่ยุบได้ ยอมรับตัวเลือกobject
เสริม
คุณสามารถสร้างอินสแตนซ์การยุบด้วยตัวสร้าง เช่น
var myCollapse = document.getElementById('myCollapse')
var bsCollapse = new bootstrap.Collapse(myCollapse, {
toggle: false
})
วิธี | คำอธิบาย |
---|---|
toggle |
สลับองค์ประกอบที่ยุบได้เพื่อแสดงหรือซ่อน กลับไปยังผู้เรียกก่อนที่องค์ประกอบที่ยุบได้จะถูกแสดงหรือซ่อนจริง ๆ (กล่าวคือ ก่อนที่ เหตุการณ์ shown.bs.collapse or hidden.bs.collapse จะเกิดขึ้น) |
show |
แสดงองค์ประกอบที่ยุบได้ กลับไปยังผู้เรียกก่อนที่จะแสดงองค์ประกอบที่ยุบได้จริง (เช่น ก่อนที่shown.bs.collapse เหตุการณ์จะเกิดขึ้น) |
hide |
ซ่อนองค์ประกอบที่ยุบได้ กลับไปยังผู้เรียกก่อนที่องค์ประกอบที่ยุบได้จะถูกซ่อนจริง ๆ (เช่น ก่อนที่hidden.bs.collapse เหตุการณ์จะเกิดขึ้น) |
dispose |
ทำลายการล่มสลายขององค์ประกอบ (ลบข้อมูลที่เก็บไว้ในองค์ประกอบ DOM) |
getInstance |
วิธีการแบบคงที่ซึ่งช่วยให้คุณได้รับอินสแตนซ์การยุบที่เชื่อมโยงกับองค์ประกอบ DOM คุณสามารถใช้ได้ดังนี้:bootstrap.Collapse.getInstance(element) |
getOrCreateInstance |
วิธีการแบบคงที่ซึ่งส่งคืนอินสแตนซ์การยุบที่เกี่ยวข้องกับองค์ประกอบ DOM หรือสร้างใหม่ในกรณีที่ไม่ได้เริ่มต้น คุณสามารถใช้ได้ดังนี้:bootstrap.Collapse.getOrCreateInstance(element) |
เหตุการณ์
คลาสการยุบของ Bootstrap แสดงเหตุการณ์สองสามเหตุการณ์สำหรับการเชื่อมต่อกับฟังก์ชันการยุบ
ประเภทงาน | คำอธิบาย |
---|---|
show.bs.collapse |
เหตุการณ์นี้จะเริ่มทำงานทันทีเมื่อมีshow การเรียกเมธอดของอินสแตนซ์ |
shown.bs.collapse |
เหตุการณ์นี้เริ่มทำงานเมื่อผู้ใช้มองเห็นองค์ประกอบการยุบ (จะรอให้การเปลี่ยน CSS เสร็จสมบูรณ์) |
hide.bs.collapse |
เหตุการณ์นี้เริ่มทำงานทันทีเมื่อhide มีการเรียกเมธอด |
hidden.bs.collapse |
เหตุการณ์นี้เริ่มทำงานเมื่อองค์ประกอบการยุบถูกซ่อนจากผู้ใช้ (จะรอให้การเปลี่ยน CSS เสร็จสมบูรณ์) |
var myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', function () {
// do something...
})