Performance: Collapse component
This affects page load speed and interaction responsiveness by controlling how content is shown or hidden dynamically.
<button class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">Toggle</button> <div class="collapse" id="collapseExample">Content here</div>
<div id="content">Content here</div> <button onclick="document.getElementById('content').style.display = (document.getElementById('content').style.display === 'none' ? 'block' : 'none')">Toggle</button>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Direct style.display toggle | Minimal DOM changes | 2 reflows per toggle | Medium paint cost | [X] Bad |
| Bootstrap collapse with class toggle | Minimal DOM changes | 1 reflow per toggle | Low paint cost | [OK] Good |
Collapse component?data-bs- for its JavaScript plugins, so the toggle attribute is data-bs-toggle="collapse".bs prefix (Bootstrap 4 or earlier). data-bs-target="collapse"'s data-bs-target="collapse" specifies the target element, not the toggle action.<button class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#info">Toggle Info</button> <div id="info" class="collapse">Hidden content here</div>
data-bs-toggle="collapse" and data-bs-target="#info", linking it to the div with id "info".<button class="btn btn-secondary" data-bs-toggle="collapse" data-bs-target="#panel">Show</button> <div id="panel" class="collaps">Content</div>
data-bs-toggle="collapse" and targets #panel.<div class="accordion" id="accordionExample">
<div class="accordion-item">
<h2 class="accordion-header">
<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" data-bs-parent="#accordionExample">
<div class="accordion-body">Content 1</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">Section 2</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
<div class="accordion-body">Content 2</div>
</div>
</div>
</div>data-bs-parent="#accordionExample" on collapse divs, which ensures only one section is open at a time.data-bs-toggle="collapse" and target correct divs. Collapse divs have the correct classes and IDs.Pass the test and this pattern moves unknown