Performance: Accordion flush variant
This affects page load speed and rendering performance by controlling the amount of DOM nodes and CSS styles applied for accordion components.
<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 here </div> </div> </div> </div>
<div class="accordion"> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="true" aria-controls="flush-collapseOne"> Accordion Item #1 </button> </h2> <div id="flush-collapseOne" class="accordion-collapse collapse show" aria-labelledby="flush-headingOne" data-bs-parent="#accordionFlushExample"> <div class="accordion-body"> Content here </div> </div> </div> </div>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Default Accordion | Moderate (nested divs and buttons) | 1-2 reflows on toggle | Higher paint cost due to borders and padding | [X] Bad |
| Accordion flush variant | Same DOM nodes | 1-2 reflows on toggle | Lower paint cost due to no borders/padding | [OK] Good |
accordion-flush class in Bootstrap's accordion component?accordion-flush class purposeaccordion-flush class is designed to remove the default background color and borders between accordion items.accordion-flushaccordion-flush = seamless borderless accordion [OK]accordion plus the modifier accordion-flush together on the same element.class='accordion accordion-flush'. Other options miss the base class or use incorrect class names.<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>accordion-flush class is applied, so the accordion will have no borders between items (flush style).collapsed and the collapse div has class collapse (not show), so the item is collapsed by default.<div class='accordion flush' id='accordionExample'> <div class='accordion-item'> ... </div> </div>
class='accordion flush', but the correct flush variant class is accordion-flush.flush alone does nothing; the flush style is not applied, so borders remain visible.flush instead of accordion-flush class. -> Option D<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 uses accordion accordion-flush and unique IDs for each item and collapse panel.<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> includes data-bs-parent='#accordionFlushExample' on each collapse div, ensuring only one item opens at a time.Pass the test and this pattern moves unknown