Performance: Tooltip component
This affects interaction responsiveness and visual stability by adding small UI elements on hover or focus.
<button data-bs-toggle="tooltip" title="Info">Hover me</button> <script>var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); });</script>
<button data-bs-toggle="tooltip" title="Info" onmouseover="heavyFunction()">Hover me</button> <script>function heavyFunction() { for(let i=0;i<1000000;i++){} }</script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Heavy JS on hover | Multiple event handlers with heavy JS | Triggers multiple reflows due to layout changes | High paint cost from frequent DOM updates | [X] Bad |
| Bootstrap native tooltip | Single tooltip element reused | Minimal reflows, uses transforms | Low paint cost with GPU compositing | [OK] Good |
data-bs-toggle="tooltip" on the element.<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Save changes">Save</button>
<script>
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
</script>data-bs-toggle="tooltip" and a title attribute. The script initializes Bootstrap tooltips on all such elements.<button type="button" class="btn btn-primary" data-toggle="tooltip" title="Click me">Click</button>
<script>
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltipTriggerList.map(function (el) {
return new bootstrap.Tooltip(el);
});
</script>data-toggle="tooltip" but Bootstrap 5 requires data-bs-toggle="tooltip".data-bs-toggle="tooltip", so it finds none because the button uses the old attribute.data-bs-toggle="tooltip" and a title attribute for text. They show on hover and keyboard focus.aria-label only without JavaScript lacks tooltip behavior, C uses popover (different), D shows text always (not tooltip).Pass the test and this pattern moves unknown