Performance: Navbar brand and toggler
MEDIUM IMPACT
This affects the initial page load speed and interaction responsiveness when toggling the navigation menu on small screens.
<nav class="navbar navbar-expand-lg"> <a class="navbar-brand" href="#">Brand</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMenu" aria-controls="navbarMenu" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarMenu"> <ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" href="#">Home</a></li> <li class="nav-item"><a class="nav-link" href="#">About</a></li> <li class="nav-item"><a class="nav-link" href="#">Contact</a></li> </ul> </div> </nav>
<nav class="navbar"> <div class="navbar-brand">Brand</div> <button class="navbar-toggler" onclick="toggleMenu()">Toggle</button> <div id="menu" style="display:none;"> <a href="#">Home</a> <a href="#">About</a> <a href="#">Contact</a> </div> </nav> <script> function toggleMenu() { const menu = document.getElementById('menu'); if (menu.style.display === 'none') { menu.style.display = 'block'; } else { menu.style.display = 'none'; } } </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Direct style toggling (display:none/block) | Minimal DOM nodes | 1 reflow per toggle | 1 paint per toggle | [X] Bad |
| Bootstrap collapse with class toggling | Minimal DOM nodes | 0 reflows, only composite | Low paint cost | [OK] Good |