How to Create Navbar in Bootstrap: Simple Guide
To create a navbar in Bootstrap, use the
navbar component with classes like navbar-expand for responsiveness and navbar-light or navbar-dark for color themes. Wrap your links inside a nav element with container and navbar-brand for branding.Syntax
The basic structure of a Bootstrap navbar includes a nav element with the class navbar. You add navbar-expand-{breakpoint} to control when the navbar collapses on smaller screens. Use navbar-light or navbar-dark with a background color class like bg-light or bg-dark to style the navbar. Inside, place a navbar-brand for your logo or title and a navbar-nav list for links.
html
<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>
Output
A horizontal navigation bar with a brand name on the left and three links: Home (highlighted as active), Features, and Pricing. On small screens, the links collapse into a toggle button.
Example
This example shows a responsive navbar that changes to a toggle menu on small screens. It uses Bootstrap 5 classes and includes a brand name and three navigation links.
html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap Navbar 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-dark bg-primary"> <div class="container-fluid"> <a class="navbar-brand" href="#">MySite</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="#">About</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Contact</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>
Output
A blue horizontal navbar with the brand 'MySite' on the left and three links: Home (active), About, and Contact. On small screens, the links collapse into a hamburger toggle button.
Common Pitfalls
- Forgetting to include Bootstrap's JavaScript bundle causes the toggle button to not work.
- Not using the correct
data-bs-*attributes for toggling in Bootstrap 5 leads to no collapse behavior. - Missing the
navbar-expand-*class means the navbar never collapses or always collapses. - Using
navbar-lightwith a dark background ornavbar-darkwith a light background can make text hard to read.
html
<!-- Wrong: Missing JS and wrong data attributes --> <nav class="navbar navbar-expand-lg navbar-light bg-dark"> <a class="navbar-brand" href="#">Brand</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#nav"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="nav"> <ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" href="#">Link</a></li> </ul> </div> </nav> <!-- Right: Correct Bootstrap 5 usage --> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <a class="navbar-brand" href="#">Brand</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#nav" aria-controls="nav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="nav"> <ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" href="#">Link</a></li> </ul> </div> </nav>
Quick Reference
Navbar classes cheat sheet:
navbar: Base class for navbarnavbar-expand-lg: Navbar expands on large screens, collapses on smallernavbar-light: Light text for dark backgroundsnavbar-dark: Dark text for light backgroundsbg-light,bg-dark,bg-primary: Background color classesnavbar-brand: Brand or logo linknavbar-toggler: Button to toggle collapsed menucollapse navbar-collapse: Container for collapsible contentnavbar-nav: Container for nav linksnav-item: Each nav itemnav-link: Each link inside nav item
Key Takeaways
Use
navbar with navbar-expand-* classes for responsive navbars.Include Bootstrap's JavaScript bundle for toggle button functionality.
Match
navbar-light or navbar-dark with appropriate background colors for readability.Use correct
data-bs-toggle and data-bs-target attributes for collapse behavior.Wrap nav links inside
navbar-nav and nav-item for proper styling.