ทรุด
สลับการมองเห็นเนื้อหาในโครงการของคุณด้วยคลาสสองสามคลาสและปลั๊กอิน 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>
แนวนอน
ปลั๊กอินยุบยังสนับสนุนการยุบในแนวนอน เพิ่ม.collapse-horizontal
คลาสตัวแก้ไขเพื่อเปลี่ยน the width
แทนheight
และตั้งค่า a width
บนองค์ประกอบลูกทันที รู้สึกอิสระที่จะเขียน Sass แบบกำหนดเองของคุณ ใช้รูปแบบอินไลน์ หรือใช้ยูทิลิตี้ความกว้างของ เรา
min-height
ชุดเพื่อหลีกเลี่ยงการทาสีซ้ำมากเกินไปในเอกสารของเรา แต่ก็ไม่ได้บังคับอย่างชัดแจ้ง
เฉพาะwidth
องค์ประกอบลูกเท่านั้นที่จำเป็น
<p>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
Toggle width collapse
</button>
</p>
<div style="min-height: 120px;">
<div class="collapse collapse-horizontal" id="collapseWidthExample">
<div class="card card-body" style="width: 300px;">
This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
</div>
</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 ไม่ได้ครอบคลุมการโต้ตอบของแป้นพิมพ์ทางเลือก ต่างๆ ที่อธิบายไว้ใน รูปแบบหีบเพลง ARIA Authoring Practices Guide - คุณจะต้องรวมสิ่งเหล่านี้ด้วย JavaScript ที่กำหนดเอง
ซาส
ตัวแปร
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
ชั้นเรียน
คลาสทรานซิชันการยุบสามารถพบได้scss/_transitions.scss
เนื่องจากใช้ร่วมกันในหลายองค์ประกอบ (การยุบและหีบเพลง)
.collapse {
&:not(.show) {
display: none;
}
}
.collapsing {
height: 0;
overflow: hidden;
@include transition($transition-collapse);
&.collapse-horizontal {
width: 0;
height: auto;
@include transition($transition-collapse-width);
}
}
การใช้งาน
ปลั๊กอินยุบใช้คลาสสองสามคลาสเพื่อจัดการกับงานหนัก:
.collapse
ซ่อนเนื้อหา.collapse.show
แสดงเนื้อหา.collapsing
ถูกเพิ่มเมื่อการเปลี่ยนแปลงเริ่มต้น และลบออกเมื่อเสร็จสิ้น
คลาสเหล่านี้สามารถพบได้ใน_transitions.scss
.
ผ่านแอตทริบิวต์ข้อมูล
เพียงเพิ่มdata-bs-toggle="collapse"
และ a data-bs-target
ให้กับองค์ประกอบเพื่อกำหนดการควบคุมองค์ประกอบที่ยุบได้หนึ่งองค์ประกอบขึ้นไปโดยอัตโนมัติ แอตทริบิวต์data-bs-target
ยอมรับตัวเลือก CSS เพื่อปรับใช้การยุบ อย่าลืมเพิ่มคลาสcollapse
ลงในองค์ประกอบที่ยุบได้ หากคุณต้องการให้เปิดโดยค่าเริ่มต้น ให้เพิ่มคลาสshow
เพิ่มเติม
หากต้องการเพิ่มการจัดการกลุ่มแบบหีบเพลงลงในพื้นที่ที่ยุบได้ ให้เพิ่มแอตทริบิวต์data-bs-parent="#selector"
ข้อมูล อ้างอิงถึงหน้าหีบเพลงสำหรับข้อมูลเพิ่มเติม
ผ่านจาวาสคริปต์
เปิดใช้งานด้วยตนเองด้วย:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
ตัวเลือก
เนื่องจากตัวเลือกสามารถส่งผ่านแอตทริบิวต์ข้อมูลหรือ JavaScript คุณจึงเพิ่มชื่อตัวเลือกต่อท้ายได้ เช่น เดียวdata-bs-
กับใน data-bs-animation="{value}"
ตรวจสอบให้แน่ใจว่าได้เปลี่ยนประเภทเคสของชื่อตัวเลือกจาก “ camelCase ” เป็น “ kebab-case ” เมื่อส่งตัวเลือกผ่านแอตทริบิวต์ data เช่น ใช้data-bs-custom-class="beautifier"
แทนdata-bs-customClass="beautifier"
.
ใน Bootstrap 5.2.0 ส่วนประกอบทั้งหมดสนับสนุนแอตทริบิวต์ข้อมูลที่สงวนไว้สำหรับทดลองdata-bs-config
ซึ่งสามารถจัดเก็บการกำหนดค่าส่วนประกอบอย่างง่ายเป็นสตริง JSON เมื่อองค์ประกอบมีdata-bs-config='{"delay":0, "title":123}'
และdata-bs-title="456"
แอตทริบิวต์ ค่าสุดท้ายtitle
จะเป็น456
และแอตทริบิวต์ข้อมูลที่แยกจากกันจะแทนที่ค่าที่ให้ไว้data-bs-config
ใน นอกจากนี้ แอตทริบิวต์ข้อมูลที่มีอยู่ยังสามารถเก็บค่า JSON เช่นdata-bs-delay='{"show":0,"hide":150}'
.
ชื่อ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
parent |
ตัวเลือกองค์ประกอบ DOM | null |
หากระบุพาเรนต์ องค์ประกอบที่ยุบได้ทั้งหมดภายใต้พาเรนต์ที่ระบุจะถูกปิดเมื่อแสดงรายการที่ยุบได้นี้ (คล้ายกับพฤติกรรมหีบเพลงแบบดั้งเดิม - ขึ้นอยู่กับcard ชั้นเรียน) ต้องตั้งค่าแอตทริบิวต์บนพื้นที่เป้าหมายที่ยุบได้ |
toggle |
บูลีน | true |
สลับองค์ประกอบที่ยุบได้ในการเรียกใช้ |
วิธีการ
วิธีการและการเปลี่ยนแบบอะซิงโครนัส
เมธอด API ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้น���ุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น
เปิดใช้งานเนื้อหาของคุณเป็นองค์ประกอบที่ยุบได้ ยอมรับตัวเลือกobject
เสริม
คุณสามารถสร้างอินสแตนซ์การยุบด้วยตัวสร้าง เช่น
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
วิธี | คำอธิบาย |
---|---|
dispose |
ทำลายการล่มสลายขององค์ประกอบ (ลบข้อมูลที่เก็บไว้ในองค์ประกอบ DOM) |
getInstance |
วิธีสแตติกที่ช่วยให้คุณได้รับอินสแตนซ์การยุบที่เชื่อมโยงกับองค์ประกอบ DOM คุณสามารถใช้ได้ดังนี้: bootstrap.Collapse.getInstance(element) . |
getOrCreateInstance |
วิธีการแบบคงที่ซึ่งส่งคืนอินสแตนซ์การยุบที่เกี่ยวข้องกับองค์ประกอบ DOM หรือสร้างใหม่ในกรณีที่ไม่ได้เริ่มต้น คุณสามารถใช้สิ่งนี้: bootstrap.Collapse.getOrCreateInstance(element) . |
hide |
ซ่อนองค์ประกอบที่ยุบได้ กลับไปยังผู้เรียกก่อนที่องค์ประกอบที่ยุบได้จะถูกซ่อนจริง ๆ (เช่น ก่อนที่hidden.bs.collapse เหตุการณ์จะเกิดขึ้น) |
show |
แสดงองค์ประกอบที่ยุบได้ กลับไปยังผู้เรียกก่อนที่จะแสดงองค์ประกอบที่ยุบได้จริง (เช่น ก่อนที่shown.bs.collapse เหตุการณ์จะเกิดขึ้น) |
toggle |
สลับองค์ประกอบที่ยุบได้เพื่อแสดงหรือซ่อน กลับไปยังผู้เรียกก่อนที่องค์ประกอบที่ยุบได้จะถูกแสดงหรือซ่อนจริง ๆ (กล่าวคือ ก่อนที่ เหตุการณ์ shown.bs.collapse or hidden.bs.collapse จะเกิดขึ้น) |
เหตุการณ์
Bootstrap’s collapse class exposes a few events for hooking into collapse functionality.
Event type | Description |
---|---|
hide.bs.collapse |
This event is fired immediately when the hide method has been called. |
hidden.bs.collapse |
This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). |
show.bs.collapse |
This event fires immediately when the show instance method is called. |
shown.bs.collapse |
This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})