Collapse
Example
Click the buttons below to show and hide another element via class changes:
.collapse
hides content.collapsing
is applied during transitions.collapse.show
shows content
Generally, we recommend using a button with the data-bs-target
attribute. While not recommended from a semantic point
of view, you can also use a link with the href
attribute (and a role="button"
). In both cases, the
data-bs-toggle="collapse"
is required.
Horizontal
Multiple targets
A <button>
or <a>
can show and hide multiple elements by referencing them with a selector in its href
or
data-bs-target
attribute.
Multiple <button>
or <a>
can show and hide an element if they each reference it with their href
or
data-bs-target
attribute.
Usage
The collapse plugin utilizes a few classes to handle the heavy lifting:
.collapse
hides the content.collapse.show
shows the content.collapsing
is added when the transition starts, and removed when it finishes
These classes can be found in _transitions.scss
.
Via data attributes
Just add data-bs-toggle="collapse"
and a data-bs-target
to the element to automatically assign control of one
or more collapsible elements. The data-bs-target
attribute accepts a CSS selector to apply the collapse to. Be
sure to add the class collapse
to the collapsible element. If you’d like it to default open, add the additional
class show
.
To add accordion-like group management to a collapsible area, add the data attribute data-bs-parent="#selector"
.
Refer to the [accordion page]({{< docsref “/components/accordion” >}}) for more information.
Via JavaScript
Enable manually with:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
Options
Name | Type | Default | Description |
---|---|---|---|
parent | selector, DOM element | null | If parent is provided, then all collapsible elements under the |
specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - | |||
this is dependent on the card class). The attribute has to be set on the target collapsible area. | |||
toggle | boolean | true | Toggles the collapsible element on invocation. |
Methods
Activates your content as a collapsible element. Accepts an optional options object
.
You can create a collapse instance with the constructor, for example:
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
Method | Description |
---|---|
dispose | Destroys an element’s collapse. (Removes stored data on the DOM element) |
getInstance | Static method which allows you to get the collapse instance associated to a DOM element, you can |
use it like this: bootstrap.Collapse.getInstance(element) . | |
getOrCreateInstance | Static method which returns a collapse instance associated to a DOM element or create a |
new one in case it wasn’t initialized. You can use it like this: | |
bootstrap.Collapse.getOrCreateInstance(element) . | |
hide | Hides a collapsible element. **Returns to the caller before the collapsible element has actually been |
hidden** (e.g., before the hidden.bs.collapse event occurs). | |
show | Shows a collapsible element. **Returns to the caller before the collapsible element has actually been |
shown** (e.g., before the shown.bs.collapse event occurs). | |
toggle | Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible |
element has actually been shown or hidden** (i.e. before the shown.bs.collapse or hidden.bs.collapse event | |
occurs). |
Events
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...
})