Performance: Responsive navbar collapse
This affects page load speed and interaction responsiveness by controlling how navigation menus show or hide on different screen sizes.
<nav class="navbar navbar-expand-md"> <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"> <ul> <li>Home</li> <li>About</li> <li>Contact</li> </ul> </nav> <script> const nav = document.querySelector('nav ul'); window.addEventListener('resize', () => { if(window.innerWidth < 768) { nav.style.display = 'none'; } else { nav.style.display = 'block'; } }); </script>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual style toggle on resize | Minimal DOM nodes | Multiple reflows on every resize event | Multiple paints causing jank | [X] Bad |
| Bootstrap collapse component | Uses existing DOM structure | Single reflow on toggle | Smooth paint with CSS transitions | [OK] Good |
navbar-toggler button in a Bootstrap responsive navbar?navbar-togglernavbar-toggler button is designed to toggle (show/hide) the navigation links when the screen is small.collapse and navbar-collapse together to make the menu collapsible.collapse navbar-collapse provides both the collapse functionality and navbar styling.<nav class="navbar navbar-expand-lg navbar-light bg-light">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navMenu">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navMenu">
<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>
</ul>
</div>
</nav>navMenu which has classes collapse navbar-collapse.<nav class="navbar navbar-expand-lg navbar-light bg-light">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#menu">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="menu">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</div>
</nav>data-bs-toggle and data-bs-target instead of data-toggle and data-target.<nav> element to achieve this?navbar-expand-lg means the navbar is expanded from large screens (992px) and larger, and collapses below large (medium and smaller).navbar-expand-lg.Pass the test and this pattern moves unknown