A responsive navbar collapse helps your website menu fit nicely on small screens like phones by hiding menu items behind a button.
Responsive navbar collapse in Bootsrap
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Brand</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> </ul> </div> </div> </nav>
The navbar-toggler button controls showing or hiding the menu on small screens.
The collapse navbar-collapse class hides the menu by default on small screens and shows it on larger screens.
navbar-expand-md so the menu collapses below medium screen size.<nav class="navbar navbar-expand-md navbar-dark bg-dark"> <div class="container-fluid"> <a class="navbar-brand" href="#">MySite</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navMenu" aria-controls="navMenu" aria-expanded="false" aria-label="Toggle navigation"> <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="#">About</a></li> <li class="nav-item"><a class="nav-link" href="#">Services</a></li> <li class="nav-item"><a class="nav-link" href="#">Contact</a></li> </ul> </div> </div> </nav>
navbar-expand-sm means the menu is collapsed on extra small screens and expands on small and bigger screens.<nav class="navbar navbar-expand-sm navbar-light bg-info"> <div class="container-fluid"> <a class="navbar-brand" href="#">Logo</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#menu" aria-controls="menu" aria-expanded="false" aria-label="Toggle navigation"> <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="#">Home</a></li> <li class="nav-item"><a class="nav-link" href="#">Blog</a></li> </ul> </div> </div> </nav>
This complete example shows a responsive navbar that collapses into a toggle button on small screens. The menu expands on larger screens.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Responsive Navbar Collapse Example</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" /> </head> <body> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">MyBrand</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> </ul> </div> </div> </nav> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
Make sure to include Bootstrap's JavaScript bundle for the toggle button to work.
Use aria-label and aria-controls for better accessibility.
The navbar-expand-* class controls at which screen size the menu expands.
A responsive navbar collapse hides menu items behind a button on small screens.
Use Bootstrap's navbar-toggler button and collapse navbar-collapse classes to create this effect.
Always include Bootstrap's CSS and JS files for proper styling and functionality.
Practice
navbar-toggler button in a Bootstrap responsive navbar?Solution
Step 1: Understand the role of
Thenavbar-togglernavbar-togglerbutton is designed to toggle (show/hide) the navigation links when the screen is small.Step 2: Connect to responsive behavior
On small screens, the menu collapses and the toggler button controls its visibility.Final Answer:
To show or hide the navigation menu on small screens -> Option BQuick Check:
Navbar toggler = show/hide menu [OK]
- Thinking it changes navbar color
- Confusing it with logo placement
- Assuming it fixes navbar position
Solution
Step 1: Identify the correct class order
Bootstrap requires the classescollapseandnavbar-collapsetogether to make the menu collapsible.Step 2: Confirm the required classes
The combinationcollapse navbar-collapseprovides both the collapse functionality and navbar styling.Final Answer:
<div class='collapse navbar-collapse'> -> Option CQuick Check:
Collapse + navbar-collapse = collapsible menu [OK]
- Missing the collapse class
- Using 'navbar-toggler' instead
- Mixing 'navbar-expand' with collapse
<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>Solution
Step 1: Understand the toggler and collapse connection
The button toggles the element with IDnavMenuwhich has classescollapse navbar-collapse.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.Final Answer:
The menu items appear or disappear when the toggler is clicked -> Option DQuick Check:
Toggler click = toggle menu visibility [OK]
- Thinking button needs an ID instead of data-bs-target
- Assuming color changes on toggle
- Believing menu is always visible
<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>Solution
Step 1: Check Bootstrap 5 attribute naming
Bootstrap 5 usesdata-bs-toggleanddata-bs-targetinstead ofdata-toggleanddata-target.Step 2: Identify impact on collapse functionality
Using old attribute names prevents the toggler from controlling the collapse behavior.Final Answer:
Use data-bs-toggle and data-bs-target attributes -> Option AQuick Check:
Bootstrap 5 uses data-bs-* attributes [OK]
- Using old Bootstrap 4 attribute names
- Adding wrong classes to button or div
- Missing id attribute on collapse div
<nav> element to achieve this?Solution
Step 1: Understand Bootstrap expand classes
The classnavbar-expand-lgmeans the navbar is expanded from large screens (992px) and larger, and collapses below large (medium and smaller).Step 2: Match requirement to class
Collapses on medium (768px) and smaller, expands on large and above:navbar-expand-lg.Final Answer:
navbar-expand-lg -> Option AQuick Check:
Expand from lg up means collapse md and below [OK]
- Choosing navbar-expand-md which expands from medium (too early)
- Using navbar-expand-sm which expands too early
- Confusing xl with lg breakpoints
Ready to prove it?
Pass the test and this pattern moves unknown
