Performance: Horizontal collapse
This affects page load speed and interaction responsiveness by controlling how content is shown or hidden horizontally, impacting layout recalculations and repaints.
<div class="collapse horizontal" id="collapseExample"> <div class="card card-body">Large content here</div> </div> <script> document.getElementById('toggleBtn').addEventListener('click', () => { const el = document.getElementById('collapseExample'); if (el.style.width === '0px' || !el.style.width) { el.style.width = '300px'; } else { el.style.width = '0px'; } }); </script>
<div class="collapse horizontal show" id="collapseExample"> <div class="card card-body">Large content here</div> </div> <script> document.getElementById('toggleBtn').addEventListener('click', () => { const el = document.getElementById('collapseExample'); el.classList.toggle('show'); }); </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Toggle 'show' class on wide collapse | Minimal DOM ops | 2-3 reflows per toggle | High paint cost due to width change | [X] Bad |
| Animate width with inline styles and transitions | Minimal DOM ops | 1 reflow per toggle | Lower paint cost, smoother animation | [OK] Good |
collapse-horizontal class do in Bootstrap?collapse-horizontalcollapse-horizontal changes this to horizontal sliding.collapse and collapse-horizontal together on the element.<div class='collapse collapse-horizontal' id='myCollapse'></div> uses both classes and includes an id for toggling, which is required for Bootstrap collapse to work.<button class='btn btn-primary' type='button' data-bs-toggle='collapse' data-bs-target='#collapseExample'>Toggle</button> <div class='collapse collapse-horizontal' id='collapseExample' style='width: 200px;'>Content</div>
collapse and collapse-horizontal classes, so it will collapse horizontally.<div class='collapse-horizontal' id='myCollapse'>Content</div> <button data-bs-toggle='collapse' data-bs-target='#myCollapse'>Toggle</button>
collapse class on the collapsible element for functionality.collapse-horizontal but lacks collapse, so it won't collapse properly.collapse class on the div. -> Option A<button class='btn btn-info' type='button' data-bs-toggle='collapse' data-bs-target='#panel' aria-expanded='false' aria-controls='panel'>Toggle Panel</button> <div class='collapse collapse-horizontal' id='panel' style='width: 300px;'>Panel Content</div>includes
aria-expanded='false' and aria-controls='panel', which help screen readers understand the toggle state.collapse and collapse-horizontal classes and sets width to 300px, which is correct for horizontal collapse.Pass the test and this pattern moves unknown