An accordion helps show or hide sections of content on a page. It keeps the page neat and easy to read.
Accordion component in Bootsrap
<div class="accordion" id="accordionExample"> <div class="accordion-item"> <h2 class="accordion-header" id="headingOne"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> Accordion Item #1 </button> </h2> <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample"> <div class="accordion-body"> Content for the first accordion item. </div> </div> </div> <!-- Repeat accordion-item blocks for more items --> </div>
Use data-bs-toggle="collapse" on the button to make it open or close the content.
The data-bs-parent attribute makes sure only one item is open at a time.
collapse show.<div class="accordion" id="accordionExample"> <div class="accordion-item"> <h2 class="accordion-header" id="headingOne"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> First Item </button> </h2> <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample"> <div class="accordion-body"> This is the first item's content. </div> </div> </div> </div>
collapsed class.<div class="accordion" id="accordionExample"> <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" aria-expanded="false" aria-controls="collapseTwo"> Second Item </button> </h2> <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> <div class="accordion-body"> Content for the second item, hidden initially. </div> </div> </div> </div>
This complete example shows a Bootstrap accordion with three items. The first item is open by default. Clicking on each header toggles its content. Only one item can be open at a time.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Bootstrap Accordion Example</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" /> </head> <body> <main class="container my-5"> <h1>Simple Accordion</h1> <div class="accordion" id="accordionExample"> <div class="accordion-item"> <h2 class="accordion-header" id="headingOne"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> What is an accordion? </button> </h2> <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample"> <div class="accordion-body"> An accordion is a UI component that lets you expand and collapse sections of content. </div> </div> </div> <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" aria-expanded="false" aria-controls="collapseTwo"> Why use an accordion? </button> </h2> <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample"> <div class="accordion-body"> It helps keep pages clean by hiding content until the user wants to see it. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header" id="headingThree"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree"> How to use it? </button> </h2> <div id="collapseThree" class="accordion-collapse collapse" aria-labelledby="headingThree" data-bs-parent="#accordionExample"> <div class="accordion-body"> Use Bootstrap classes and data attributes to create the accordion structure and behavior. </div> </div> </div> </div> </main> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
Always include aria-expanded and aria-controls for accessibility.
Use the Bootstrap JavaScript bundle to enable the accordion's interactive behavior.
The data-bs-parent attribute ensures only one accordion item is open at a time.
An accordion shows or hides content sections to keep pages tidy.
Bootstrap uses specific classes and data attributes to create accordions easily.
Accessibility attributes help screen readers understand the accordion's state.
Practice
Accordion component in Bootstrap?Solution
Step 1: Understand Accordion functionality
The Accordion component is designed to toggle visibility of content sections by expanding or collapsing them.Step 2: Compare with other Bootstrap components
Navigation bars, carousels, and buttons serve different purposes unrelated to content toggling.Final Answer:
To show and hide sections of content by expanding or collapsing them -> Option BQuick Check:
Accordion = toggle content visibility [OK]
- Confusing Accordion with navigation menus
- Thinking Accordion is for image sliders
- Assuming Accordion styles buttons
Solution
Step 1: Identify the container element for Accordion
The Accordion container uses adivwith classaccordionand an ID for reference.Step 2: Check Bootstrap 5 syntax
Bootstrap 5 requiresdiv.accordionas the wrapper, notaccordiontag or other classes likeaccordion-itemoraccordion-collapsealone.Final Answer:
<div class='accordion' id='myAccordion'> -> Option AQuick Check:
Accordion container = div.accordion [OK]
- Using a non-existent <accordion> tag
- Starting with accordion-item instead of accordion container
- Confusing collapse section with container
<div class='accordion-item'>
<h2 class='accordion-header' id='headingOne'>
<button class='accordion-button' type='button' data-bs-toggle='collapse' data-bs-target='#collapseOne' aria-expanded='true' aria-controls='collapseOne'>
Section 1
</button>
</h2>
<div id='collapseOne' class='accordion-collapse collapse show' aria-labelledby='headingOne' data-bs-parent='#myAccordion'>
<div class='accordion-body'>Content 1</div>
</div>
</div>Solution
Step 1: Analyze button attributes for toggle
The button hasdata-bs-toggle='collapse'anddata-bs-target='#collapseOne', linking it to the collapsible content.Step 2: Check the collapsible content state
The content div has classcollapse show, meaning it is visible initially and will toggle on button click.Final Answer:
The content inside 'Content 1' will collapse or expand when the button is clicked -> Option CQuick Check:
Button toggles collapse content visibility [OK]
- Assuming button does nothing without explicit JS
- Thinking button reloads page
- Confusing color change with content toggle
<div class='accordion' id='accordionExample'>
<div class='accordion-item'>
<h2 class='accordion-header' id='headingOne'>
<button class='accordion-button' type='button' data-bs-toggle='collapse' data-bs-target='#collapseOne' aria-expanded='false' aria-controls='collapseOne'>
Accordion Item #1
</button>
</h2>
<div id='collapseOne' class='accordion-collapse' aria-labelledby='headingOne' data-bs-parent='#accordionExample'>
<div class='accordion-body'>Content for item 1</div>
</div>
</div>
</div>Solution
Step 1: Check classes on collapsible content
The collapsible div must have classcollapseto enable Bootstrap's collapse behavior.Step 2: Verify other attributes
Thearia-expandedattribute on the button is correct anddata-bs-parentbelongs on the collapse div. The container has an ID.Final Answer:
Theaccordion-collapsediv is missing thecollapseclass -> Option AQuick Check:
collapse class missing = no toggle [OK]
- Forgetting the 'collapse' class on content div
- Misplacing data-bs-parent attribute
- Removing aria-expanded attribute
Solution
Step 1: Understand Bootstrap's single-open behavior
Bootstrap usesdata-bs-parenton collapse divs to ensure only one section is open at a time.Step 2: Set default open section
Adding theshowclass to the first collapse div makes it open by default on page load.Step 3: Evaluate other options
Attributes likedata-bs-toggle='accordion',data-bs-multiple, ordata-bs-singledo not exist in Bootstrap 5 for this purpose.Final Answer:
Add data-bs-parent to each collapse div and add show class to the first collapse div -> Option DQuick Check:
data-bs-parent + show class = single open with default [OK]
- Using non-existent Bootstrap attributes
- Forgetting to add show class for default open
- Misplacing data-bs-parent attribute
Ready to prove it?
Pass the test and this pattern moves unknown
