An accordion helps show or hide content in sections. The flush variant removes outer borders for a cleaner look.
Accordion flush variant in Bootsrap
<div class="accordion accordion-flush" id="accordionFlushExample"> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingOne"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne"> Accordion Item #1 </button> </h2> <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample"> <div class="accordion-body">Content for item 1.</div> </div> </div> <!-- Repeat accordion-item for more items --> </div>
Add accordion-flush class to remove outer borders and spacing.
Use unique IDs for each collapse section and link them with aria-controls and aria-labelledby.
<div class="accordion accordion-flush" id="accordionFlushExample"> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingOne"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne"> First Item </button> </h2> <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample"> <div class="accordion-body">This is the first item's content.</div> </div> </div> </div>
show class.<div class="accordion accordion-flush" id="accordionFlushExample"> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingTwo"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="true" aria-controls="flush-collapseTwo"> Second Item (Open) </button> </h2> <div id="flush-collapseTwo" class="accordion-collapse collapse show" aria-labelledby="flush-headingTwo" data-bs-parent="#accordionFlushExample"> <div class="accordion-body">This content is visible on page load.</div> </div> </div> </div>
This example shows a flush accordion with three sections. Each section is collapsed by default. Clicking a header expands that section's content. The flush style removes outer borders for a clean look.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Bootstrap Accordion Flush 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-4"> <h1>Accordion Flush Variant</h1> <div class="accordion accordion-flush" id="accordionFlushExample"> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingOne"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne"> Section 1 </button> </h2> <div id="flush-collapseOne" class="accordion-collapse collapse" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample"> <div class="accordion-body"> This is the content of section 1. It is hidden until you click the header. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingTwo"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="false" aria-controls="flush-collapseTwo"> Section 2 </button> </h2> <div id="flush-collapseTwo" class="accordion-collapse collapse" aria-labelledby="flush-headingTwo" data-bs-parent="#accordionFlushExample"> <div class="accordion-body"> This is the content of section 2. It also starts hidden. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header" id="flush-headingThree"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseThree" aria-expanded="false" aria-controls="flush-collapseThree"> Section 3 </button> </h2> <div id="flush-collapseThree" class="accordion-collapse collapse" aria-labelledby="flush-headingThree" data-bs-parent="#accordionFlushExample"> <div class="accordion-body"> This is the content of section 3. Click to expand. </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>
The flush variant removes the default accordion borders and spacing for a minimal style.
Always include Bootstrap's JavaScript bundle for the accordion to work.
Use unique IDs and aria attributes for accessibility and proper toggling.
An accordion organizes content in collapsible sections.
The flush variant removes outer borders for a cleaner look.
Use Bootstrap classes accordion and accordion-flush together.
Practice
accordion-flush class in Bootstrap's accordion component?Solution
Step 1: Understand the
Theaccordion-flushclass purposeaccordion-flushclass is designed to remove the default background color and borders between accordion items.Step 2: Visual effect of
This creates a seamless, flush look where accordion items appear connected without spacing or borders.accordion-flushFinal Answer:
It removes the default background and borders between accordion items for a seamless look. -> Option AQuick Check:
accordion-flush= seamless borderless accordion [OK]
- Thinking it adds padding instead of removing borders
- Confusing flush with changing fonts or colors
- Assuming it changes accordion behavior on hover
Solution
Step 1: Check Bootstrap class naming conventions
Bootstrap requires the base classaccordionplus the modifieraccordion-flushtogether on the same element.Step 2: Verify correct class order and syntax
The correct syntax isclass='accordion accordion-flush'. Other options miss the base class or use incorrect class names.Final Answer:
<div class='accordion accordion-flush' id='myAccordion'> -> Option BQuick Check:
Base + flush classes together = correct syntax [OK]
- Using only 'accordion-flush' without 'accordion'
- Swapping class order incorrectly
- Using 'flush' alone as a class
<div class='accordion accordion-flush' id='accordionExample'>
<div class='accordion-item'>
<h2 class='accordion-header' id='headingOne'>
<button class='accordion-button collapsed' type='button' data-bs-toggle='collapse' data-bs-target='#collapseOne' aria-expanded='false' aria-controls='collapseOne'>
Item 1
</button>
</h2>
<div id='collapseOne' class='accordion-collapse collapse' aria-labelledby='headingOne' data-bs-parent='#accordionExample'>
<div class='accordion-body'>Content 1</div>
</div>
</div>
</div>Solution
Step 1: Identify the accordion style
Theaccordion-flushclass is applied, so the accordion will have no borders between items (flush style).Step 2: Check the button state and collapse class
The button has classcollapsedand the collapse div has classcollapse(notshow), so the item is collapsed by default.Final Answer:
An accordion with flush style: no borders between items and a collapsed button for Item 1. -> Option CQuick Check:
Flush + collapsed button = An accordion with flush style: no borders between items and a collapsed button for Item 1. [OK]
- Assuming default borders appear with flush class
- Thinking collapsed button means expanded content
- Confusing 'collapse' and 'show' classes
<div class='accordion flush' id='accordionExample'> <div class='accordion-item'> ... </div> </div>
Solution
Step 1: Check the class names used
The code usesclass='accordion flush', but the correct flush variant class isaccordion-flush.Step 2: Understand effect of incorrect class
Usingflushalone does nothing; the flush style is not applied, so borders remain visible.Final Answer:
Usingflushinstead ofaccordion-flushclass. -> Option DQuick Check:
Correct flush class is 'accordion-flush' not 'flush' [OK]
- Typing 'flush' instead of 'accordion-flush'
- Forgetting to include 'accordion' base class
- Assuming JS affects border styles
Solution
Step 1: Confirm flush style and unique IDs
<div class='accordion accordion-flush' id='accordionFlushExample'> <div class='accordion-item'> <h2 class='accordion-header' id='flush-headingOne'> <button class='accordion-button collapsed' type='button' data-bs-toggle='collapse' data-bs-target='#flush-collapseOne' aria-expanded='false' aria-controls='flush-collapseOne'>Item 1</button> </h2> <div id='flush-collapseOne' class='accordion-collapse collapse' aria-labelledby='flush-headingOne' data-bs-parent='#accordionFlushExample'> <div class='accordion-body'>Content 1</div> </div> </div> <!-- Repeat for items 2 and 3 with unique IDs and same data-bs-parent --> </div>correctly usesaccordion accordion-flushand unique IDs for each item and collapse panel.Step 2: Check data-bs-parent attribute for exclusive open behavior
<div class='accordion accordion-flush' id='accordionFlushExample'> <div class='accordion-item'> <h2 class='accordion-header' id='flush-headingOne'> <button class='accordion-button collapsed' type='button' data-bs-toggle='collapse' data-bs-target='#flush-collapseOne' aria-expanded='false' aria-controls='flush-collapseOne'>Item 1</button> </h2> <div id='flush-collapseOne' class='accordion-collapse collapse' aria-labelledby='flush-headingOne' data-bs-parent='#accordionFlushExample'> <div class='accordion-body'>Content 1</div> </div> </div> <!-- Repeat for items 2 and 3 with unique IDs and same data-bs-parent --> </div>includesdata-bs-parent='#accordionFlushExample'on each collapse div, ensuring only one item opens at a time.Final Answer:
Option A correctly implements a flush accordion with exclusive open items. -> Option AQuick Check:
Flush + unique IDs + data-bs-parent = exclusive open accordion [OK]
- Missing data-bs-parent causing multiple items open
- Duplicate or missing unique IDs breaking collapse behavior
- Incorrect or missing flush class
Ready to prove it?
Pass the test and this pattern moves unknown
