Dozens of reusable components built to provide navigation, alerts, popovers, and more
Toggleable, contextual menu for displaying lists of links. Made interactive with the dropdown JavaScript plugin.
- <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
- <li><a tabindex="-1" href="#">Action</a></li>
- <li><a tabindex="-1" href="#">Another action</a></li>
- <li><a tabindex="-1" href="#">Something else here</a></li>
- <li class="divider"></li>
- <li><a tabindex="-1" href="#">Separated link</a></li>
- </ul>
Looking at just the dropdown menu, here's the required HTML. You need to wrap the dropdown's trigger and the dropdown menu within .dropdown
, or another element that declares position: relative;
. Then just create the menu.
- <div class="dropdown">
- <!-- Link or button to toggle dropdown -->
- <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
- <li><a tabindex="-1" href="#">Action</a></li>
- <li><a tabindex="-1" href="#">Another action</a></li>
- <li><a tabindex="-1" href="#">Something else here</a></li>
- <li class="divider"></li>
- <li><a tabindex="-1" href="#">Separated link</a></li>
- </ul>
- </div>
Align menus to the right and add include additional levels of dropdowns.
Add .pull-right
to a .dropdown-menu
to right align the dropdown menu.
- <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel">
- ...
- </ul>
Add .disabled
to a <li>
in the dropdown to disable the link.
- <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu">
- <li><a tabindex="-1" href="#">Regular link</a></li>
- <li class="disabled"><a tabindex="-1" href="#">Disabled link</a></li>
- <li><a tabindex="-1" href="#">Another link</a></li>
- </ul>
Add an extra level of dropdown menus, appearing on hover like those of OS X, with some simple markup additions. Add .dropdown-submenu
to any li
in an existing dropdown menu for automatic styling.
Default
Dropup
- <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
- ...
- <li class="dropdown-submenu">
- <a tabindex="-1" href="#">More options</a>
- <ul class="dropdown-menu">
- ...
- </ul>
- </li>
- </ul>
Two basic options, along with two more specific variations.
Wrap a series of buttons with .btn
in .btn-group
.
- <div class="btn-group">
- <button class="btn">Left</button>
- <button class="btn">Middle</button>
- <button class="btn">Right</button>
- </div>
Combine sets of <div class="btn-group">
into a <div class="btn-toolbar">
for more complex components.
- <div class="btn-toolbar">
- <div class="btn-group">
- ...
- </div>
- </div>
Make a set of buttons appear vertically stacked rather than horizontally.
- <div class="btn-group btn-group-vertical">
- ...
- </div>
Button groups can also function as radios, where only one button may be active, or checkboxes, where any number of buttons may be active. View the JavaScript docs for that.
Heads up! Buttons with dropdowns must be individually wrapped in their own .btn-group
within a .btn-toolbar
for proper rendering.
Use any button to trigger a dropdown menu by placing it within a .btn-group
and providing the proper menu markup.
- <div class="btn-group">
- <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
- Action
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu">
- <!-- dropdown menu links -->
- </ul>
- </div>
Button dropdowns work at any size: .btn-large
, .btn-small
, or .btn-mini
.
Button dropdowns require the Bootstrap dropdown plugin to function.
In some cases—like mobile—dropdown menus will extend outside the viewport. You need to resolve the alignment manually or with custom JavaScript.
Building on the button group styles and markup, we can easily create a split button. Split buttons feature a standard action on the left and a dropdown toggle on the right with contextual links.
- <div class="btn-group">
- <button class="btn">Action</button>
- <button class="btn dropdown-toggle" data-toggle="dropdown">
- <span class="caret"></span>
- </button>
- <ul class="dropdown-menu">
- <!-- dropdown menu links -->
- </ul>
- </div>
Utilize the extra button classes .btn-mini
, .btn-small
, or .btn-large
for sizing.
- <div class="btn-group">
- <button class="btn btn-mini">Action</button>
- <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
- <span class="caret"></span>
- </button>
- <ul class="dropdown-menu">
- <!-- dropdown menu links -->
- </ul>
- </div>
Dropdown menus can also be toggled from the bottom up by adding a single class to the immediate parent of .dropdown-menu
. It will flip the direction of the .caret
and reposition the menu itself to move from the bottom up instead of top down.
- <div class="btn-group dropup">
- <button class="btn">Dropup</button>
- <button class="btn dropdown-toggle" data-toggle="dropdown">
- <span class="caret"></span>
- </button>
- <ul class="dropdown-menu">
- <!-- dropdown menu links -->
- </ul>
- </div>
All nav components here—tabs, pills, and lists—share the same base markup and styles through the .nav
class.
Take a regular <ul>
of links and add .nav-tabs
:
- <ul class="nav nav-tabs">
- <li class="active">
- <a href="#">Home</a>
- </li>
- <li><a href="#">...</a></li>
- <li><a href="#">...</a></li>
- </ul>
Take that same HTML, but use .nav-pills
instead:
- <ul class="nav nav-pills">
- <li class="active">
- <a href="#">Home</a>
- </li>
- <li><a href="#">...</a></li>
- <li><a href="#">...</a></li>
- </ul>
For any nav component (tabs, pills, or list), add .disabled
for gray links and no hover effects. Links will remain clickable, however, unless you remove the href
attribute. Alternatively, you could implement custom JavaScript to prevent those clicks.
- <ul class="nav nav-pills">
- ...
- <li class="disabled"><a href="#">Home</a></li>
- ...
- </ul>
To align nav links, use the .pull-left
or .pull-right
utility classes. Both classes will add a CSS float in the specified direction.
As tabs and pills are horizontal by default, just add a second class, .nav-stacked
, to make them appear vertically stacked.
Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.
- <ul class="nav nav-tabs">
- <li class="dropdown">
- <a class="dropdown-toggle"
- data-toggle="dropdown"
- href="#">
- Dropdown
- <b class="caret"></b>
- </a>
- <ul class="dropdown-menu">
- <!-- links -->
- </ul>
- </li>
- </ul>
- <ul class="nav nav-pills">
- <li class="dropdown">
- <a class="dropdown-toggle"
- data-toggle="dropdown"
- href="#">
- Dropdown
- <b class="caret"></b>
- </a>
- <ul class="dropdown-menu">
- <!-- links -->
- </ul>
- </li>
- </ul>
A simple and easy way to build groups of nav links with optional headers. They're best used in sidebars like the Finder in OS X.
Take a list of links and add class="nav nav-list"
:
- <ul class="nav nav-list">
- <li class="nav-header">List header</li>
- <li class="active"><a href="#">Home</a></li>
- <li><a href="#">Library</a></li>
- ...
- </ul>
Note
For nesting within a nav list, include class="nav nav-list"
on any nested <ul>
.
Add a horizontal divider by creating an empty list item with the class .divider
, like so:
- <ul class="nav nav-list">
- ...
- <li class="divider"></li>
- ...
- </ul>
Bring your tabs to life with a simple plugin to toggle between content via tabs. Bootstrap integrates tabbable tabs in four styles: top (default), right, bottom, and left.
To make tabs tabbable, create a .tab-pane
with unique ID for every tab and wrap them in .tab-content
.
- <div class="tabbable"> <!-- Only required for left/right tabs -->
- <ul class="nav nav-tabs">
- <li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
- <li><a href="#tab2" data-toggle="tab">Section 2</a></li>
- </ul>
- <div class="tab-content">
- <div class="tab-pane active" id="tab1">
- <p>I'm in Section 1.</p>
- </div>
- <div class="tab-pane" id="tab2">
- <p>Howdy, I'm in Section 2.</p>
- </div>
- </div>
- </div>
To make tabs fade in, add .fade
to each .tab-pane
.
All tabbable tabs are powered by our lightweight jQuery plugin. Read more about how to bring tabbable tabs to life on the JavaScript docs page.
Flip the order of the HTML and add a class to put tabs on the bottom.
- <div class="tabbable tabs-below">
- <div class="tab-content">
- ...
- </div>
- <ul class="nav nav-tabs">
- ...
- </ul>
- </div>
Swap the class to put tabs on the left.
- <div class="tabbable tabs-left">
- <ul class="nav nav-tabs">
- ...
- </ul>
- <div class="tab-content">
- ...
- </div>
- </div>
To start, navbars are static (not fixed to the top) and include support for a project name and basic navigation. Place one anywhere within a .container
, which sets the width of your site and content.
- <div class="navbar">
- <div class="navbar-inner">
- <a class="brand" href="#">Title</a>
- <ul class="nav">
- <li class="active"><a href="#">Home</a></li>
- <li><a href="#">Link</a></li>
- <li><a href="#">Link</a></li>
- </ul>
- </div>
- </div>
A simple link to show your brand or project name only requires an anchor tag.
- <a class="brand" href="#">Project name</a>
Nav items are simple to add via unordered lists.
- <ul class="nav">
- <li class="active">
- <a href="#">Home</a>
- </li>
- <li><a href="#">Link</a></li>
- <li><a href="#">Link</a></li>
- </ul>
You can easily add dividers to your nav links with an empty list item and a simple class. Just add this between links:
- <ul class="nav">
- ...
- <li class="divider-vertical"></li>
- ...
- </ul>
To properly style and position a form within the navbar, add the appropriate classes as shown below. For a default form, include .navbar-form
and either .pull-left
or .pull-right
to properly align it.
- <form class="navbar-form pull-left">
- <input type="text" class="span2">
- <button type="submit" class="btn">Submit</button>
- </form>
For a more customized search form, add .navbar-search
to the form
and .search-query
to the input for specialized styles in the navbar.
- <form class="navbar-search pull-left">
- <input type="text" class="search-query" placeholder="Search">
- </form>
Align nav links, search form, or text, use the .pull-left
or .pull-right
utility classes. Both classes will add a CSS float in the specified direction.
Add dropdowns and dropups to the nav with a bit of markup and the dropdowns JavaScript plugin.
- <ul class="nav">
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- Account
- <b class="caret"></b>
- </a>
- <ul class="dropdown-menu">
- ...
- </ul>
- </li>
- </ul>
Visit the JavaScript dropdowns documentation for more markup and information on calling dropdowns.
Wrap strings of text in an element with .navbar-text
, usually on a <p>
tag for proper leading and color.
Fix the navbar to the top or bottom of the viewport with an additional class on the outermost div, .navbar
.
Add .navbar-fixed-top
and remember to account for the hidden area underneath it by adding at least 40px padding
to the <body>
. Be sure to add this after the core Bootstrap CSS and before the optional responsive CSS.
- <div class="navbar navbar-fixed-top">
- ...
- </div>
Add .navbar-fixed-bottom
instead.
- <div class="navbar navbar-fixed-bottom">
- ...
- </div>
To implement a collapsing responsive navbar, wrap your navbar content in a containing div, .nav-collapse.collapse
, and add the navbar toggle button, .btn-navbar
.
- <div class="navbar">
- <div class="navbar-inner">
- <div class="container">
- <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </a>
- <!-- Be sure to leave the brand out there if you want it shown -->
- <a class="brand" href="#">Project name</a>
- <!-- Everything you want hidden at 940px or less, place within here -->
- <div class="nav-collapse collapse">
- <!-- .nav, .navbar-search, .navbar-form, etc -->
- </div>
- </div>
- </div>
- </div>
A single example shown as it might be displayed across multiple pages.
- <ul class="breadcrumb">
- <li><a href="#">Home</a> <span class="divider">/</span></li>
- <li><a href="#">Library</a> <span class="divider">/</span></li>
- <li class="active">Data</li>
- </ul>
Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.
- <div class="pagination">
- <ul>
- <li><a href="#">Prev</a></li>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- <li><a href="#">5</a></li>
- <li><a href="#">Next</a></li>
- </ul>
- </div>
Links are customizable for different circumstances. Use .disabled
for unclickable links and .active
to indicate the current page.
- <div class="pagination">
- <ul>
- <li class="disabled"><a href="#">«</a></li>
- <li class="active"><a href="#">1</a></li>
- ...
- </ul>
- </div>
You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.
- <div class="pagination">
- <ul>
- <li class="disabled"><span>«</span></li>
- <li class="active"><span>1</span></li>
- ...
- </ul>
- </div>
Fancy larger or smaller pagination? Add .pagination-large
, .pagination-small
, or .pagination-mini
for additional sizes.
- <div class="pagination pagination-large">
- <ul>
- ...
- </ul>
- </div>
- <div class="pagination">
- <ul>
- ...
- </ul>
- </div>
- <div class="pagination pagination-small">
- <ul>
- ...
- </ul>
- </div>
- <div class="pagination pagination-mini">
- <ul>
- ...
- </ul>
- </div>
Add one of two optional classes to change the alignment of pagination links: .pagination-centered
and .pagination-right
.
- <div class="pagination pagination-centered">
- ...
- </div>
Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.
By default, the pager centers links.
- <ul class="pager">
- <li><a href="#">Previous</a></li>
- <li><a href="#">Next</a></li>
- </ul>
Alternatively, you can align each link to the sides:
- <ul class="pager">
- <li class="previous">
- <a href="#">← Older</a>
- </li>
- <li class="next">
- <a href="#">Newer →</a>
- </li>
- </ul>
Labels | Markup |
---|---|
Primary |
<span class="label label-primary">Success</span>
|
Secundary |
<span class="label label-secundary">Default</span>
|
Extra |
<span class="label label-extra">Default</span>
|
Default |
<span class="label">Default</span>
|
Success |
<span class="label label-success">Success</span>
|
Warning |
<span class="label label-warning">Warning</span>
|
Important |
<span class="label label-important">Important</span>
|
Info |
<span class="label label-info">Info</span>
|
Inverse |
<span class="label label-inverse">Inverse</span>
|
Name | Example | Markup |
---|---|---|
Primary | 1 |
<span class="badge badge-primary">2</span>
|
Secundary | 2 |
<span class="badge badge-secundary">2</span>
|
Extra | 3 |
<span class="badge badge-extra">2</span>
|
Default | 4 |
<span class="badge">1</span>
|
Success | 5 |
<span class="badge badge-success">2</span>
|
Warning | 6 |
<span class="badge badge-warning">4</span>
|
Important | 7 |
<span class="badge badge-important">6</span>
|
Info | 8 |
<span class="badge badge-info">8</span>
|
Inverse | 9 |
<span class="badge badge-inverse">10</span>
|
For easy implementation, labels and badges will simply collapse (via CSS's :empty
selector) when no content exists within.
A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.
This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.
- <div class="hero-unit">
- <h1>Heading</h1>
- <p>Tagline</p>
- <p>
- <a class="btn btn-primary btn-large">
- Learn more
- </a>
- </p>
- </div>
A simple shell for an h1
to appropriately space out and segment sections of content on a page. It can utilize the h1
's default small
, element as well most other components (with additional styles).
- <div class="page-header">
- <h1>Example page header <small>Subtext for header</small></h1>
- </div>
By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.
With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.
Thumbnails (previously .media-grid
up until v1.4) are great for grids of photos or videos, image search results, retail products, portfolios, and much more. They can be links or static content.
Thumbnail markup is simple—a ul
with any number of li
elements is all that is required. It's also super flexible, allowing for any type of content with just a bit more markup to wrap your contents.
Lastly, the thumbnails component uses existing grid system classes—like .span2
or .span3
—for control of thumbnail dimensions.
As mentioned previously, the required markup for thumbnails is light and straightforward. Here's a look at the default setup for linked images:
- <ul class="thumbnails">
- <li class="span4">
- <a href="#" class="thumbnail">
- <img data-src="holder.js/300x200" alt="">
- </a>
- </li>
- ...
- </ul>
For custom HTML content in thumbnails, the markup changes slightly. To allow block level content anywhere, we swap the <a>
for a <div>
like so:
- <ul class="thumbnails">
- <li class="span4">
- <div class="thumbnail">
- <img data-src="holder.js/300x200" alt="">
- <h3>Thumbnail label</h3>
- <p>Thumbnail caption...</p>
- </div>
- </li>
- ...
- </ul>
Wrap any text and an optional dismiss button in .alert
for a basic warning alert message.
- <div class="alert">
- <button type="button" class="close" data-dismiss="alert">×</button>
- <strong>Warning!</strong> Best check yo self, you're not looking too good.
- </div>
Mobile Safari and Mobile Opera browsers, in addition to the data-dismiss="alert"
attribute, require an href="#"
for the dismissal of alerts when using an <a>
tag.
- <a href="#" class="close" data-dismiss="alert">×</a>
Alternatively, you may use a <button>
element with the data attribute, which we have opted to do for our docs. When using <button>
, you must include type="button"
or your forms may not submit.
- <button type="button" class="close" data-dismiss="alert">×</button>
Use the alerts jQuery plugin for quick and easy dismissal of alerts.
For longer messages, increase the padding on the top and bottom of the alert wrapper by adding .alert-block
.
Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
- <div class="alert alert-block">
- <button type="button" class="close" data-dismiss="alert">×</button>
- <h4>Warning!</h4>
- Best check yo self, you're not...
- </div>
Add optional classes to change an alert's connotation.
- <div class="alert alert-error">
- ...
- </div>
- <div class="alert alert-success">
- ...
- </div>
- <div class="alert alert-info">
- ...
- </div>
Default progress bar with a vertical gradient.
- <div class="progress">
- <div class="bar" style="width: 60%;"></div>
- </div>
Uses a gradient to create a striped effect. Not available in IE7-8.
- <div class="progress progress-striped">
- <div class="bar" style="width: 20%;"></div>
- </div>
Add .active
to .progress-striped
to animate the stripes right to left. Not available in all versions of IE.
- <div class="progress progress-striped active">
- <div class="bar" style="width: 40%;"></div>
- </div>
Place multiple bars into the same .progress
to stack them.
- <div class="progress">
- <div class="bar bar-success" style="width: 35%;"></div>
- <div class="bar bar-warning" style="width: 20%;"></div>
- <div class="bar bar-danger" style="width: 10%;"></div>
- </div>
Note Progress bars use CSS3 gradients, transitions, and animations to achieve all their effects. These features are not supported in IE7-9 or older versions of Firefox. Versions earlier than Internet Explorer 10 and Opera 12 do not support animations.