Performance: Popover component
Popover components affect page interaction responsiveness and visual stability by adding dynamic overlays triggered by user actions.
document.body.addEventListener('mouseover', event => { const target = event.target.closest('[data-bs-toggle="popover"]'); if(target && !target._popover) { target._popover = new bootstrap.Popover(target, {trigger: 'hover'}); target._popover.show(); } });
document.querySelectorAll('[data-bs-toggle="popover"]').forEach(el => new bootstrap.Popover(el, {trigger: 'hover'}));
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Eager popover initialization on many elements | High (many event listeners and nodes) | Multiple reflows on page load | High paint cost on show/hide | [X] Bad |
| Lazy popover initialization on user interaction | Low (only active popovers) | Single reflow per popover show | Lower paint cost | [OK] Good |
popover component?data-bs-toggle="popover" to mark elements that should show popovers.data-toggle="tooltip" is for tooltips, data-bs-target is for modals or collapse, and data-bs-dismiss is for closing components.<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Hello, Bootstrap!">Click me</button>
<script>
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl);
});
</script>data-bs-toggle="popover" and initializes Bootstrap popovers on them.data-bs-content="Hello, Bootstrap!", so clicking it shows a popover with that text near the button.<button id="myBtn" data-bs-toggle="popover" data-bs-content="Info">Info</button>
<script>
var popover = new bootstrap.Popover('#myBtn');
</script>'#myBtn' to bootstrap.Popover, but it expects a DOM element.document.querySelector('#myBtn'), not a string.data-bs-toggle="popover", data-bs-trigger="hover", data-bs-placement="right", title, and data-bs-content.data-bs-toggle="popover", data-bs-trigger="hover", data-bs-placement="right", title="Info", and data-bs-content="More details here" is correct.data-toggle="popover" uses old Bootstrap 4 syntax without bs- prefix.data-bs-toggle="tooltip" is for tooltips.data-bs-trigger="click" and data-bs-placement="left" does not match requirements.data-bs-toggle="popover" data-bs-trigger="hover" data-bs-placement="right" title="Info" data-bs-content="More details here" [OK]Pass the test and this pattern moves unknown