Performance: Collapse toggle via JavaScript
This affects interaction responsiveness and visual stability when toggling collapsible content on the page.
const collapseInstance = new bootstrap.Collapse(document.getElementById('collapseExample'), { toggle: false });
// On toggle button click:
collapseInstance.toggle();const content = document.getElementById('collapseExample'); content.style.display = content.style.display === 'none' ? 'block' : 'none';
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Direct style.display toggle | Minimal DOM nodes affected | 2 reflows per toggle | High paint cost due to forced layout | [X] Bad |
| Bootstrap Collapse toggle method | Minimal DOM nodes affected | 1 reflow per toggle | Lower paint cost with GPU compositing | [OK] Good |
toggle() method do when used with new bootstrap.Collapse(element) in Bootstrap?new bootstrap.Collapse(element) creates a controller for the collapsible content.toggle() methodtoggle() method switches the content between visible and hidden states smoothly.myCollapse in JavaScript?document.getElementById('myCollapse') returns the element to pass to the constructor.const collapse = new bootstrap.Collapse(document.getElementById('content'), { toggle: false });
document.getElementById('toggleBtn').addEventListener('click', () => {
collapse.toggle();
});The content is initially hidden.
toggle: false means it won't auto-toggle on creation.toggle() on clicktoggle() manually switches the state, so hidden content becomes visible.const collapse = new bootstrap.Collapse('content');
document.getElementById('btn').addEventListener('click', () => {
collapse.toggle();
});document.getElementById('content') to get the element before passing it.const collapse = new bootstrap.Collapse(document.getElementById('panel'), { toggle: false });
const btn = document.getElementById('toggleBtn');
btn.addEventListener('click', () => {
collapse.toggle();
if (btn.textContent === 'Show') {
btn.textContent = 'Hide';
} else {
btn.textContent = 'Show';
}
});collapse.toggle() then updates the button text based on current text, which is logical.textContent is correct for plain text updates, and the collapse instance is created once outside the event.Pass the test and this pattern moves unknown