Nav tabs and pills help organize content into sections that users can switch between easily. They make websites cleaner and easier to navigate.
Nav tabs and pills in Bootsrap
<ul class="nav nav-tabs"> <li class="nav-item"> <a class="nav-link active" href="#">Active Tab</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Another Tab</a> </li> </ul> <ul class="nav nav-pills"> <li class="nav-item"> <a class="nav-link active" href="#">Active Pill</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Another Pill</a> </li> </ul>
Use nav-tabs for tab style navigation and nav-pills for pill style navigation.
Add active class to highlight the current tab or pill.
<ul class="nav nav-tabs"> <li class="nav-item"> <a class="nav-link active" href="#home">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#profile">Profile</a> </li> </ul>
<ul class="nav nav-pills"> <li class="nav-item"> <a class="nav-link active" href="#messages">Messages</a> </li> <li class="nav-item"> <a class="nav-link" href="#settings">Settings</a> </li> </ul>
disabled class to the nav-link and setting tabindex="-1" and aria-disabled="true" for accessibility.<ul class="nav nav-tabs"> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled Tab</a> </li> <li class="nav-item"> <a class="nav-link active" href="#">Active Tab</a> </li> </ul>
This example shows two navigation styles: tabs and pills. Clicking each tab or pill changes the visible content below it. It uses Bootstrap 5's JavaScript for switching content and includes accessibility roles and labels.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Bootstrap Nav Tabs and Pills Example</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" /> </head> <body> <main class="container mt-4"> <h1>Nav Tabs and Pills Demo</h1> <section aria-label="Navigation Tabs"> <h2>Tabs</h2> <ul class="nav nav-tabs" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button> </li> </ul> <div class="tab-content p-3 border border-top-0" id="myTabContent"> <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab"> <p>Welcome to the Home tab content.</p> </div> <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"> <p>This is the Profile tab content.</p> </div> </div> </section> <section aria-label="Navigation Pills" class="mt-5"> <h2>Pills</h2> <ul class="nav nav-pills" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="messages-pill" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="true">Messages</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="settings-pill" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="false">Settings</button> </li> </ul> <div class="tab-content p-3 border border-top-0" id="myPillContent"> <div class="tab-pane fade show active" id="messages" role="tabpanel" aria-labelledby="messages-pill"> <p>You have no new messages.</p> </div> <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-pill"> <p>Adjust your settings here.</p> </div> </div> </section> </main> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
Use button elements with data-bs-toggle for better accessibility and Bootstrap JavaScript support.
Always include aria-controls, aria-selected, and roles for screen readers.
Bootstrap's JavaScript must be included for tabs and pills to switch content properly.
Nav tabs and pills organize content into clickable sections.
Use nav-tabs for tab style and nav-pills for pill style navigation.
Include accessibility attributes and Bootstrap JS for interactive switching.