An Accordion is a vertically collapsing component that fundamentally acts as a list of headers hiding detailed body paragraphs beneath them. They are heavily utilized for Frequently Asked Questions (FAQ) components, dense tables of contents, or compacting overly complex user dashboards.
To construct a reliable accordion, you begin with the main .accordion wrapper. Inside, you stack multiple .accordion-item elements. Each item possesses an .accordion-header (equipped with an .accordion-button to toggle visibility) and an .accordion-collapse wrapper holding the standard .accordion-body.
When the data-bs-parent attribute is mapped on the collapsing containers back to the main accordion ID, Bootstrap enforces exclusive state—opening one item automatically collapses all others.
.accordion-body, though the transition does limit overflow.
<!-- Notice data-bs-parent ensures exclusive toggling -->
<div class="accordion" id="accordionExample">
<!-- Item 1 -->
<div class="accordion-item">
<h2 class="accordion-header" id="headingOne">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne">
Accordion Item #1
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#accordionExample">
<div class="accordion-body">...</div>
</div>
</div>
<!-- Item 2 -->
<div class="accordion-item">
<h2 class="accordion-header" id="headingTwo">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo">
Accordion Item #2
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
<div class="accordion-body">...</div>
</div>
</div>
</div>
To render accordions completely edge-to-edge relative to their parent container, append the .accordion-flush class snippet onto the primary `.accordion` wrapper. This explicitly strips out default background colors, outer borders, and some rounded corners.
<!-- Include .accordion-flush -->
<div class="accordion accordion-flush" id="accordionFlushExample">
...
</div>
Sometimes you want users to open numerous accordion items simultaneously without one forcefully collapsing the other. To achieve this, simply omit the data-bs-parent attribute on each respective .accordion-collapse element.
<!-- Notice data-bs-parent is missing entirely from the collapse element! -->
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseFree">
Independent Item
</button>
</h2>
<!-- Removed data-bs-parent -->
<div id="collapseFree" class="accordion-collapse collapse">
<div class="accordion-body">...</div>
</div>
</div>