Bird
Raised Fist0
Bootsrapmarkup~8 mins

Responsive navbar collapse in Bootsrap - Performance & Optimization

Choose your learning style10 modes available
Performance: Responsive navbar collapse
MEDIUM IMPACT
This affects page load speed and interaction responsiveness by controlling how navigation menus show or hide on different screen sizes.
Creating a responsive navigation menu that collapses on small screens
Bootsrap
<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>
Bootstrap's built-in collapse uses CSS transitions and minimal DOM changes, reducing reflows and improving responsiveness.
📈 Performance GainSingle reflow triggered only on toggle, no continuous reflows on resize
Creating a responsive navigation menu that collapses on small screens
Bootsrap
<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>
Manually toggling display style on resize triggers multiple reflows and repaints, causing jank and slower interaction.
📉 Performance CostTriggers 1 reflow and repaint on every resize event firing
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Manual style toggle on resizeMinimal DOM nodesMultiple reflows on every resize eventMultiple paints causing jank[X] Bad
Bootstrap collapse componentUses existing DOM structureSingle reflow on toggleSmooth paint with CSS transitions[OK] Good
Rendering Pipeline
The collapse toggle changes element visibility and triggers style recalculation and layout updates only when user interacts, avoiding continuous layout thrashing.
→Style Calculation
→Layout
→Paint
→Composite
⚠️ BottleneckLayout (reflow) when toggling the menu
Core Web Vital Affected
INP
This affects page load speed and interaction responsiveness by controlling how navigation menus show or hide on different screen sizes.
Optimization Tips
1Avoid manual style changes on every resize event to prevent multiple reflows.
2Use CSS transitions and framework collapse components to batch style updates.
3Test navbar toggle responsiveness with browser DevTools Performance panel.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance problem with manually toggling navbar visibility on every window resize?
AIt triggers many reflows and repaints causing slow responsiveness
BIt increases the bundle size significantly
CIt blocks the main thread for several seconds
DIt causes the navbar to be inaccessible to screen readers
DevTools: Performance
How to check: Record a performance profile while resizing the window and toggling the navbar. Look for layout and paint events in the flame chart.
What to look for: Multiple layout recalculations during resize indicate poor performance; a single layout on toggle shows good practice.

Practice

(1/5)
1. What is the main purpose of the navbar-toggler button in a Bootstrap responsive navbar?
easy
A. To change the navbar color
B. To show or hide the navigation menu on small screens
C. To add a logo to the navbar
D. To make the navbar fixed at the top

Solution

  1. Step 1: Understand the role of navbar-toggler

    The navbar-toggler button is designed to toggle (show/hide) the navigation links when the screen is small.
  2. Step 2: Connect to responsive behavior

    On small screens, the menu collapses and the toggler button controls its visibility.
  3. Final Answer:

    To show or hide the navigation menu on small screens -> Option B
  4. Quick Check:

    Navbar toggler = show/hide menu [OK]
Hint: Toggler button controls menu visibility on small screens [OK]
Common Mistakes:
  • Thinking it changes navbar color
  • Confusing it with logo placement
  • Assuming it fixes navbar position
2. Which of the following is the correct Bootstrap class combination to make the navbar links collapsible?
easy
A. navbar-collapse
B. navbar-toggler collapse
C. collapse navbar-collapse
D. navbar-expand collapse

Solution

  1. Step 1: Identify the correct class order

    Bootstrap requires the classes collapse and navbar-collapse together to make the menu collapsible.
  2. Step 2: Confirm the required classes

    The combination collapse navbar-collapse provides both the collapse functionality and navbar styling.
  3. Final Answer:

    <div class='collapse navbar-collapse'> -> Option C
  4. Quick Check:

    Collapse + navbar-collapse = collapsible menu [OK]
Hint: Use 'collapse navbar-collapse' exactly for collapsible menu [OK]
Common Mistakes:
  • Missing the collapse class
  • Using 'navbar-toggler' instead
  • Mixing 'navbar-expand' with collapse
3. Given this HTML snippet, what happens when the screen width is small and the toggler button is clicked?
<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>
medium
A. The menu items are always visible regardless of screen size
B. The navbar changes color
C. Nothing happens because the button is missing an ID
D. The menu items appear or disappear when the toggler is clicked

Solution

  1. Step 1: Understand the toggler and collapse connection

    The button toggles the element with ID navMenu which has classes collapse navbar-collapse.
  2. Step 2: Behavior on small screens

    On small screens, the menu is hidden by default and appears when the toggler is clicked, then hides again on next click.
  3. Final Answer:

    The menu items appear or disappear when the toggler is clicked -> Option D
  4. Quick Check:

    Toggler click = toggle menu visibility [OK]
Hint: Toggler button toggles menu visibility on small screens [OK]
Common Mistakes:
  • Thinking button needs an ID instead of data-bs-target
  • Assuming color changes on toggle
  • Believing menu is always visible
4. What is wrong with this navbar code that prevents the collapse from working?
<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>
medium
A. The attributes should be data-bs-toggle and data-bs-target instead of data-toggle and data-target
B. The button is missing the class navbar-collapse
C. The div should have class navbar-toggler instead of collapse
D. The id attribute on the div is missing

Solution

  1. Step 1: Check Bootstrap 5 attribute naming

    Bootstrap 5 uses data-bs-toggle and data-bs-target instead of data-toggle and data-target.
  2. Step 2: Identify impact on collapse functionality

    Using old attribute names prevents the toggler from controlling the collapse behavior.
  3. Final Answer:

    Use data-bs-toggle and data-bs-target attributes -> Option A
  4. Quick Check:

    Bootstrap 5 uses data-bs-* attributes [OK]
Hint: Use data-bs-toggle and data-bs-target for Bootstrap 5 [OK]
Common Mistakes:
  • Using old Bootstrap 4 attribute names
  • Adding wrong classes to button or div
  • Missing id attribute on collapse div
5. You want a navbar that collapses on medium screens and smaller, but stays expanded on large screens and above. Which class should you use on the <nav> element to achieve this?
hard
A. navbar-expand-lg
B. navbar-expand-md
C. navbar-expand-sm
D. navbar-expand-xl

Solution

  1. Step 1: Understand Bootstrap expand classes

    The class navbar-expand-lg means the navbar is expanded from large screens (992px) and larger, and collapses below large (medium and smaller).
  2. Step 2: Match requirement to class

    Collapses on medium (768px) and smaller, expands on large and above: navbar-expand-lg.
  3. Final Answer:

    navbar-expand-lg -> Option A
  4. Quick Check:

    Expand from lg up means collapse md and below [OK]
Hint: Use navbar-expand-lg to collapse on medium and smaller [OK]
Common Mistakes:
  • Choosing navbar-expand-md which expands from medium (too early)
  • Using navbar-expand-sm which expands too early
  • Confusing xl with lg breakpoints
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard