Skip navigation

Components

Dozens of reusable components built to provide navigation, alerts, popovers, and more.

Button groups

Examples

Two basic options, along with two more specific variations.

Single button group

Wrap a series of buttons with .btn in .btn-group.

<div class="btn-group">
  <button class="btn">Left</button>
  <button class="btn">Center</button>
  <button class="btn">Right</button>
</div>

Multiple button groups

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>

Vertical button groups

Make a set of buttons appear vertically stacked rather than horizontally.

<div class="btn-group btn-group-vertical">
  ...
</div>

Checkbox and radio flavors

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.

Dropdowns in button groups

Heads up! Buttons with dropdowns must be individually wrapped in their own .btn-group within a .btn-toolbar for proper rendering.

Button dropdown menus

Overview and examples

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 btn-default dropdown-toggle" data-toggle="dropdown" href="#">
    Action
  </a>
  <ul class="dropdown-menu">
    <!-- dropdown menu links -->
  </ul>
</div>

Works with all button sizes

Button dropdowns work at any size: .btn-lg, or .btn-sm.

Requires JavaScript

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.


Split button dropdowns

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"></button>
  <ul class="dropdown-menu">
    <!-- dropdown menu links -->
  </ul>
</div>

Sizes

Utilize the extra button classes .btn-xs, .btn-sm, or .btn-lg for sizing.

<div class="btn-group">
  <button class="btn btn-default btn-xs">Action</button>
  <button class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"></button>
  <ul class="dropdown-menu">
    <!-- dropdown menu links -->
  </ul>
</div>

Dropup menus

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 btn-default">Dropup</button>
  <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"></button>
  <ul class="dropdown-menu" role="menu">
    <!-- dropdown menu links -->
  </ul>
</div>

Cards

Bootstrap’s cards provide a flexible and extensible content container with multiple variants and options.

Simple Card

Card title
Card subtitle

With supporting text below as a natural lead-in to additional content.

Card Link

Radio buttons

Radio buttons as in buttons.

         add(new BooleanRadioGroup("boolean", new Model<>(Boolean.FALSE)));
        

Boolean radio buttons with AJAX: the selected value is true

Enum based radio buttons with AJAX: the selected value is submitted

Pagination

Standard pagination

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.

<ul class="pagination">
<li class="page-item" ><a class="page-link" href="#">Prev</a></li>
<li class="page-item" ><a class="page-link" href="#">1</a></li>
<li class="page-item" ><a class="page-link" href="#">2</a></li>
<li class="page-item" ><a class="page-link" href="#">3</a></li>
<li class="page-item" ><a class="page-link" href="#">4</a></li>
<li class="page-item" ><a class="page-link" href="#">Next</a></li>
</ul>

Options

Disabled and active states

Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.

<ul class="pagination">
  <li class="page-item disabled"><a class="page-link" href="#">Prev</a></li>
  <li class="page-item active"><a class="page-link" href="#">1</a></li>
  ...
</ul>

You can optionally swap out active or disabled anchors for spans to remove click functionality while retaining intended styles.

<ul class="pagination">
  <li class="page-item disabled"><span class="page-link">Prev</span></li>
  <li class="page-item active"><span class="page-link">1</span></li>
  ...
</ul>

Sizes

Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

<div>
  <ul class="pagination pagination-lg">
    ...
  </ul>
</div>
<div>
  <ul class="pagination">
    ...
  </ul>
</div>
<div>
  <ul class="pagination pagination-sm">
    ...
  </ul>
</div>

Badges

Badges are our small count and labeling components.

Example Markup
badge-primary <span class='badge badge-primary'>badge-primary</span>
badge-secondary <span class='badge badge-secondary'>badge-secondary</span>
badge-success <span class='badge badge-success'>badge-success</span>
badge-danger <span class='badge badge-danger'>badge-danger</span>
badge-warning <span class='badge badge-warning'>badge-warning</span>
badge-info <span class='badge badge-info'>badge-info</span>
badge-light <span class='badge badge-light'>badge-light</span>
badge-dark <span class='badge badge-dark'>badge-dark</span>

Pills

Use the .badge-pill modifier class to make badges more rounded (with a larger border-radius and additional horizontal padding). Useful if you miss the badges from v3.

Name Example Markup
badge-primary 1 <span class='badge badge-pills badge-primary'>badge-primary</span>
badge-secondary 1 <span class='badge badge-pills badge-secondary'>badge-secondary</span>
badge-success 1 <span class='badge badge-pills badge-success'>badge-success</span>
badge-danger 1 <span class='badge badge-pills badge-danger'>badge-danger</span>
badge-warning 1 <span class='badge badge-pills badge-warning'>badge-warning</span>
badge-info 1 <span class='badge badge-pills badge-info'>badge-info</span>
badge-light 1 <span class='badge badge-pills badge-light'>badge-light</span>
badge-dark 1 <span class='badge badge-pills badge-dark'>badge-dark</span>

Badges can be used as part of links or buttons to provide a counter.

            <button wicket:id="badge-button">
                Submit <span wicket:id="button-count"></span>
                <span class="sr-only">unread messages</span>
            </button>
        

Typographic components

Hero unit

A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.

Hello, world!

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

Learn more

<div class="jumbotron">
  <h1>Heading</h1>
  <p>Tagline</p>
  <p>
    <a class="btn btn-primary btn-lg">
      Learn more
    </a>
  </p>
</div>

Page header

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).

Example page header Subtext for header

<div class="pb-2 mt-4 mb-2 border-bottom">
  <h1>Example page header <small>Subtext for header</small></h1>
</div>

Thumbnails Grids of images, videos, text, and more

Default thumbnails

By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.

Highly customizable

With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.

Thumbnail label

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

Action Action

Thumbnail label

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

Action Action

Thumbnail label

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

Action Action

Why use 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.

Simple, flexible markup

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.

Uses grid column sizes

Lastly, the thumbnails component uses existing grid system classes—like .col-lg-2 or .col-lg-3—for control of thumbnail dimensions.

Markup

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="col-lg-4">
    <a href="#" class="thumbnail">
      <img src="http://placehold.it/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="col-lg-4">
    <div class="thumbnail">
      <img src="http://placehold.it/300x200" alt="">
      <h3>Thumbnail label</h3>
      <p>Thumbnail caption...</p>
    </div>
  </li>
  ...
</ul>

More examples

Explore all your options with the various grid classes available to you. You can also mix and match different sizes.

Alerts Styles for success, warning, and error messages

Default alert

Wrap any text and an optional dismiss button in .alert for a basic warning alert message.

Warning! Best check yo self, you're not looking too good.
<div class="alert alert-warning">
  <button type="button" class="close" data-dismiss="alert">×</button>
  <strong>Warning!</strong> Best check yo self, you're not looking too good.
</div>

Dismiss buttons

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>

Dismiss alerts via JavaScript

Use the alerts jQuery plugin for quick and easy dismissal of alerts.


Options

Contextual alternatives

Add optional classes to change an alert's connotation.

Error or danger

Oh snap! Change a few things up and try submitting again.
<div class="alert alert-error">
  ...
</div>

Success

Well done! You successfully read this important alert message.
<div class="alert alert-success">
  ...
</div>

Information

Heads up! This alert needs your attention, but it's not super important.
<div class="alert alert-info">
  ...
</div>

Progress bars For loading, redirecting, or action status

Examples and markup

Basic

Default progress bar with a vertical gradient.

60%
<div class="progress">
  <div class="progress-bar" style="width: 60%;"></div>
</div>

Striped

Uses a gradient to create a striped effect. Not available in IE7-8.

20%
<div class="progress">
  <div class="progress-bar progress-bar-striped" style="width: 20%;"></div>
</div>

Animated

Add .progress-bar-animated to .progress-bar-striped to animate the stripes right to left. Not available in all versions of IE.

45%
<div class="progress">
  <div class="progress-bar progress-bar-striped progress-bar-animated" style="width: 40%;"></div>
</div>
    

Labeled

Use Stack#labeled(true) to show the stack's label.

The progress is: 45%
<div class="progress">
  <div class="progress-bar" style="width: 40%;"></div>
</div>

Stacked

Place multiple bars into the same .progress to stack them.

35%
20%
10%
<div class="progress">
  <div class="progress-bar bg-success" style="width: 35%;"></div>
  <div class="progress-bar bg-warning" style="width: 20%;"></div>
  <div class="progress-bar bg-danger" style="width: 10%;"></div>
</div>

Options

Additional colors

Progress bars use background color utility classes for consistent styles.

20%
40%
60%
80%
<div class="progress">
  <div class="progress-bar bg-info" style="width: 20%"></div>
</div>
<div class="progress">
  <div class="progress-bar bg-success" style="width: 40%"></div>
</div>
<div class="progress">
  <div class="progress-bar bg-warning" style="width: 60%"></div>
</div>
<div class="progress">
  <div class="progress-bar bg-danger" style="width: 80%"></div>
</div>

Striped bars

Similar to the solid colors, we have varied striped progress bars.

<div class="progress">
  <div class="progress-bar progress-bar-striped bg-info" style="width: 20%"></div>
</div>
<div class="progress">
  <div class="progress-bar progress-bar-striped bg-success" style="width: 40%"></div>
</div>
<div class="progress">
  <div class="progress-bar progress-bar-striped bg-warning" style="width: 60%"></div>
</div>
<div class="progress">
  <div class="progress-bar progress-bar-striped bg-danger" style="width: 80%"></div>
</div>

Updatable bars

A ProgressBar with self updating Ajax behavior.

0%

Browser support

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.

Media object

Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.

Default example

The default media allow to float a media object (images, video, audio) to the left or right of a content block.

Media heading

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

Media heading

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

Media heading

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
<div class="media">
  <a class="media-left" href="#">
    <img class="media-object" src="http://placehold.it/64x64">
  </a>
  <div class="media-body">
    <h4 class="media-heading">Media heading</h4>
    ...

    <!-- Nested media object -->
    <div class="media">
      ...
    </div>
  </div>
</div>

Media list

With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).

  • Media heading

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    Nested media heading

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    Nested media heading

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    Nested media heading

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
  • Media heading

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
<ul class="media-list">
  <li class="media">
    <a class="media-left" href="#">
      <img class="media-object" src="http://placehold.it/64x64">
    </a>
    <div class="media-body">
      <h4 class="media-heading">Media heading</h4>
      ...

      <!-- Nested media object -->
      <div class="media">
        ...
     </div>
    </div>
  </li>
</ul>

Miscellaneous Lightweight utility components

Wells

Use the well as a simple effect on an element to give it an inset effect.

Look, I'm in a well!
<div class="well">
  ...
</div>

Optional classes

Control padding and rounded corners with two optional modifier classes.

Look, I'm in a well!
<div class="well well-lg">
  ...
</div>
Look, I'm in a well!
<div class="well well-sm">
  ...
</div>

Close icon

Use the generic close icon for dismissing content like modals and alerts.

<button class="close">&times;</button>

iOS devices require an href="#" for click events if you would rather use an anchor.

<a class="close" href="#">&times;</a>

Helper classes

Simple, focused classes for small display or behavior tweaks.

.pull-left

Float an element left

class="pull-left"
.pull-left {
  float: left;
}

.pull-right

Float an element right

class="pull-right"
.pull-right {
  float: right;
}

.text-muted

Change an element's color to #999

class="text-muted"
.text-muted {
  color: #999;
}

.clearfix

Clear the float on any element

class="clearfix"
.clearfix {
  *zoom: 1;
  &:before,
  &:after {
    display: table;
    content: "";
  }
  &:after {
    clear: both;
  }
}