Bulma Navbar
Bulma's Navbar is a responsive navigation component that supports dropdowns, logos, and call-to-action buttons. It automatically collapses into a hamburger menu on mobile devices.
Basic Navbar
The simplest navbar with brand and menu:
<nav class="navbar" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<strong>My Website</strong>
</a>
</div>
</nav>Complete Navbar with Menu
<nav class="navbar" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<img src="logo.png" alt="Logo" width="112" height="28">
</a>
<!-- Hamburger menu for mobile -->
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div class="navbar-menu">
<!-- Left side -->
<div class="navbar-start">
<a class="navbar-item">Home</a>
<a class="navbar-item">Documentation</a>
<!-- Dropdown -->
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">More</a>
<div class="navbar-dropdown">
<a class="navbar-item">About</a>
<a class="navbar-item">Jobs</a>
<a class="navbar-item">Contact</a>
<hr class="navbar-divider">
<a class="navbar-item">Report an issue</a>
</div>
</div>
</div>
<!-- Right side -->
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<a class="button is-primary">Sign up</a>
<a class="button is-light">Log in</a>
</div>
</div>
</div>
</div>
</nav>Navbar Colors
Apply different color schemes:
<!-- Primary color --> <nav class="navbar is-primary"> <!-- Dark theme --> <nav class="navbar is-dark"> <!-- Custom colors --> <nav class="navbar is-info"> <nav class="navbar is-success"> <nav class="navbar is-warning"> <nav class="navbar is-danger"> <!-- Transparent navbar (for hero sections) --> <nav class="navbar is-transparent">
Fixed Navbar
Create fixed navigation bars:
<!-- Fixed to top -->
<nav class="navbar is-fixed-top">
<!-- Fixed to bottom -->
<nav class="navbar is-fixed-bottom">
<!-- With spacing adjustment (to avoid content being hidden) -->
<body>
<nav class="navbar is-fixed-top">
<!-- Content -->
<div class="section" style="margin-top: 3.25rem;">
<!-- Page content -->
</div>
</body>Navbar Items with Icons
<div class="navbar-item">
<span class="icon">
<i class="fas fa-home"></i>
</span>
<span>Home</span>
</div>
<div class="navbar-item">
<span class="icon-text">
<span class="icon">
<i class="fas fa-bell"></i>
</span>
<span>Notifications</span>
<span class="tag is-danger is-rounded">3</span>
</span>
</div>Responsive Behavior
Bulma navbar automatically handles responsiveness:
<!-- Always hide dropdown arrow on mobile -->
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link is-arrowless">
Menu
</a>
</div>
<!-- Show/hide items based on screen size -->
<div class="navbar-item is-hidden-touch">
Visible on desktop only
</div>
<div class="navbar-item is-hidden-desktop">
Visible on mobile only
</div>Navbar with Search
<div class="navbar-item">
<div class="field has-addons">
<div class="control">
<input class="input" type="text" placeholder="Search...">
</div>
<div class="control">
<button class="button is-primary">
<span class="icon">
<i class="fas fa-search"></i>
</span>
</button>
</div>
</div>
</div>JavaScript Integration
For hamburger menu functionality:
// Add this JavaScript to toggle the mobile menu
document.addEventListener('DOMContentLoaded', () => {
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
if ($navbarBurgers.length > 0) {
$navbarBurgers.forEach( el => {
el.addEventListener('click', () => {
const target = el.dataset.target;
const $target = document.getElementById(target);
el.classList.toggle('is-active');
$target.classList.toggle('is-active');
});
});
}
});Complete Examples
E-commerce Navbar
<nav class="navbar is-dark" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<strong>ShopFast</strong>
</a>
</div>
<div class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item">Categories</a>
<a class="navbar-item">Deals</a>
<a class="navbar-item">New Arrivals</a>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="field has-addons">
<div class="control">
<input class="input" type="text" placeholder="Search products">
</div>
<div class="control">
<button class="button is-primary">
<i class="fas fa-search"></i>
</button>
</div>
</div>
</div>
<a class="navbar-item">
<span class="icon">
<i class="fas fa-shopping-cart"></i>
</span>
<span class="tag is-danger is-rounded">5</span>
</a>
<a class="navbar-item">Account</a>
</div>
</div>
</nav>Documentation Site Navbar
<nav class="navbar is-light" role="navigation" aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<strong>Docs</strong>
</a>
</div>
<div class="navbar-menu">
<div class="navbar-start">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Getting Started</a>
<div class="navbar-dropdown">
<a class="navbar-item">Installation</a>
<a class="navbar-item">Quick Start</a>
<a class="navbar-item">Tutorial</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Components</a>
<div class="navbar-dropdown">
<a class="navbar-item">Buttons</a>
<a class="navbar-item">Forms</a>
<a class="navbar-item">Cards</a>
<a class="navbar-item">Modals</a>
</div>
</div>
<a class="navbar-item">API Reference</a>
<a class="navbar-item">Examples</a>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<a class="button is-primary">Download</a>
<a class="button is-light">GitHub</a>
</div>
</div>
</div>
</div>
</div>
</nav>Best Practices
- Always include
role=&qout;navigation&qout;andaria-labelfor accessibility - Use
.containerinside navbar to limit width on large screens - Implement proper JavaScript for hamburger menu toggle
- Test navbar on all screen sizes
- Keep menu items clear and concise
- Use dropdowns for organizing related links
Tip: Use
is-spaced class for navbar with more padding, and is-transparent for hero section overlays.