坍塌
使用一些類和我們的 JavaScript 插件來切換項目中內容的可見性。
這個怎麼運作
折疊 JavaScript 插件用於顯示和隱藏內容。按鈕或錨點用作映射到您切換的特定元素的觸發器。折疊一個元素會將 動畫height
從它的當前值變為0
。鑑於 CSS 處理動畫的方式,您不能padding
在.collapse
元素上使用。相反,將類用作獨立的包裝元素。
prefers-reduced-motion
媒體查詢。請參閱
我們可訪問性文檔的減少運動部分。
例子
單擊下面的按鈕以通過類更改顯示和隱藏另一個元素:
.collapse
隱藏內容.collapsing
在過渡期間應用.collapse.show
顯示內容
通常,我們建議使用帶有data-bs-target
屬性的按鈕。雖然從語義角度不推薦,但您也可以使用帶有href
屬性(和 a 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
修飾符類以轉換width
而不是並在直接子元素上height
設置 a 。width
隨意編寫您自己的自定義 Sass、使用內聯樣式或使用我們的寬度實用程序。
min-height
組以避免我們的文檔中過度重繪,但這並不是明確要求的。
只有width
on 子元素是必需的。
<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>
多個目標
<button>
or可以通過<a>
在其href
ordata-bs-target
屬性中使用選擇器引用多個元素來顯示和隱藏多個元素。多個<button>
or<a>
可以顯示和隱藏一個元素,如果它們每個都用它們的href
ordata-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 創作實踐指南手風琴模式中描述的各種可選鍵盤交互- 您需要自己將這些包含在自定義 JavaScript 中。
薩斯
變量
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
課程
Collapse 過渡類可以在其中找到,scss/_transitions.scss
因為它們在多個組件(collapse 和手風琴)之間共享。
.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"
和 adata-bs-target
即可自動分配對一個或多個可折疊元素的控制。該data-bs-target
屬性接受一個 CSS 選擇器來應用折疊。確保將類添加collapse
到可折疊元素。如果您希望它默認打開,請添加附加類show
。
要將手風琴式的組管理添加到可折疊區域,請添加 data 屬性data-bs-parent="#selector"
。有關詳細信息,請參閱手風琴頁面。
通過 JavaScript
手動啟用:
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-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
並且單獨的數據屬性將覆蓋給定的值 on data-bs-config
。此外,現有數據屬性能夠容納 JSON 值,例如data-bs-delay='{"show":0,"hide":150}'
.
姓名 | 類型 | 默認 | 描述 |
---|---|---|---|
parent |
選擇器,DOM 元素 | null |
如果提供了 parent,則在顯示此可折疊項時,將關閉指定父項下的所有可折疊元素。(類似於傳統的手風琴行為 - 這取決於card 類)。該屬性必須在目標可折疊區域上設置。 |
toggle |
布爾值 | true |
在調用時切換可折疊元素。 |
方法
將您的內容激活為可折疊元素。接受一個可選選項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 |
將可折疊元素切換為顯示或隱藏。在可折疊元素實際顯示或隱藏之前(即在or事件發生之前)返回給調用者。shown.bs.collapse hidden.bs.collapse |
活動
Bootstrap 的折疊類公開了一些用於掛鉤折疊功能的事件。
事件類型 | 描述 |
---|---|
hide.bs.collapse |
hide 調用該方法時立即觸發此事件。 |
hidden.bs.collapse |
當對用戶隱藏折疊元素時會觸發此事件(將等待 CSS 轉換完成)。 |
show.bs.collapse |
show 調用實例方法時立即觸發此事件。 |
shown.bs.collapse |
當折疊元素對用戶可見時觸發此事件(將等待 CSS 轉換完成)。 |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})