### Bootstrap

- Overview
- Grid
- Layouts
- Typography
- Tables
- Forms
- Navigation
- Alerts
- Popovers
- Less

# Twitter Bootstrap

Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites.
It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.

Nerd alert: Bootstrap is built with Less and was designed to work out of the gate with only modern browsers in mind.

###### Hotlink the CSS

For the quickest and easiest start, just copy this snippet into your webpage.

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap-1.0.0.min.css">

###### Use it with Less

A fan of using Less? No problem, just clone the repo and add these lines:

<link rel="stylesheet/less" href="/path/to/bootstrap.less"> <script src="/path/to/less.js"></script>

###### Fork on GitHub

Download, fork, pull, file issues, and more with the official Bootstrap repo on Github.

Bootstrap on GitHub »

# Grid system Rock the standard 940px or roll your own

## Default grid

The default grid system provided as part of Bootstrap is a 940px wide 16-column grid. It’s a flavor of the popular 960 grid system, but without the additional margin/padding on the left and right sides.

### Example grid markup

As shown here, a basic layout can be created with two "columns," each spanning a number of the 16 foundational columns we defined as part of our grid system. See the examples below for more variations.

    <div class="row">
      <div class="span6 columns">
        ...
      </div>
      <div class="span10 columns">
        ...
      </div>
    </div>

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
3
3
3
3
3
1
4
4
4
4
4
6
6
8
8
5
11
16

#### Offsetting columns

4
8 offset 4
4 offset 4
4 offset 4
5 offset 3
5 offset 3
10 offset 6

# Layouts Basic templates to create webpages

## Fixed layout

A basic 940px wide, centered container layout for just about any site or page.

    <body>
      <div class="container">
        ...
      </div>
    </body>

## Fluid layout

A flexible fluid or liquid page structure with min- and max-widths and a left-hand sidebar. Great for apps.

    <body>
      <div class="container-fluid">
        <div class="sidebar">
          ...
        </div>
        <div class="content">
          ...
        </div>
      </div>
    </body>

# Typography Headings, paragraphs, lists, and other inline type elements

## Headings and copy

A standard typographic hierarchy for structuring your webpages.

# h1. Heading 1

## h2. Heading 2

### h3. Heading 3

#### h4. Heading 4

##### h5. Heading 5

###### h6. Heading 6

### Example paragraph

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula ut id elit.

# Example headingHas sub-heading…

You can also add subheadings with the `<strong>` and `<em>`

## Misc. elements

Using emphasis, addresses, & abbreviations

`<strong>` `<em>` `<address>` `<abbr>`

#### When to use

Emphasis tags (`<strong>` and `<em>`) should be used to add visual distinction between a word or phrase and its surrounding copy. Use `<strong>` for plain old attention and `<em>` for slick attention and titles.

### Emphasis in a paragraph

Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue.

Note: It’s still okay to use `<b>` and `<i>` tags in HTML5, but they don’t come with inherent styles anymore. `<b>` is meant to convey importance while `<i>` is mostly for voice, technical terms, etc.

### Addresses

The `address` element is used for contact information for its nearest ancestor, or the entire body of work. Here’s how it looks:

Note: Each line in an `address` must end with a line-break (`<br />`) or be wrapped in a block-level tag (e.g., `p`) to properly structure the content.

### Abbreviations

For abbreviations and acronyms, use the `abbr` tag (`acronym` is deprecated in HTML5). Put the shorthand form within the tag and set a title for the complete name.

## Blockquotes

`<blockquote>` `<p>` `<small>`

Be sure to wrap your `blockquote` around `paragraph` and `small` tags. When citing a source, use the `small` element. The CSS will automatically preface a name with an em dash (&mdash;).

> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua…

> Dr. Julius Hibbert

## Lists

#### Unordered `<ul>`

- Jeremy Bixby
- Robert Dezure
- Josh Washington
- Anton Capresi
- My Team Mates
  - George Castanza
  - Jerry Seinfeld
  - Cosmo Kramer
  - Elaine Bennis
  - Newman
- John Jacob
- Paul Pierce
- Kevin Garnett

#### Unstyled `<ul.unstyled>`

- Jeremy Bixby
- Robert Dezure
- Josh Washington
- Anton Capresi
- My Team Mates
  - George Castanza
  - Jerry Seinfeld
  - Cosmo Kramer
  - Elaine Bennis
  - Newman
- John Jacob
- Paul Pierce
- Kevin Garnett

#### Ordered `<ol>`

1. Jeremy Bixby
2. Robert Dezure
3. Josh Washington
4. Anton Capresi
5. My Team Mates
   1. George Castanza
   2. Jerry Seinfeld
   3. Cosmo Kramer
   4. Elaine Bennis
   5. Newman
6. John Jacob
7. Paul Pierce
8. Kevin Garnett

#### Description `dl`

Description lists
  A description list is perfect for defining terms.
Euismod
  Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
  Donec id elit non mi porta gravida at eget metus.
Malesuada porta
  Etiam porta sem malesuada magna mollis euismod.

# Tables For, you guessed it, tabular data

## Building tables

`<table>` `<thead>` `<tbody>` `<tr>` `<th>` `<td>` `<colspan>` `<caption>`

Tables are great—for a lot of things. Great tables, however, need a bit of markup love to be useful, scalable, and readable (at the code level). Here are a few tips to help.

Always wrap your column headers in a `thead` such that hierarchy is `thead` > `tr` > `th`.

Similar to the column headers, all your table’s body content should be wrapped in a `tbody` so your hierarchy is `tbody` > `tr` > `td`.

### Example: Default table styles

All tables will be automatically styled with only the essential borders to ensure readability and maintain structure. No need to add extra classes or attributes.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <table class="common-table">
      ...
    </table>

### Example: Zebra-striped

Get a little fancy with your tables by adding zebra-striping—just add the `.zebra-striped` class.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Some | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <table class="common-table zebra-striped">
    ...
    </table>

### Example: Zebra-striped w/ TableSorter.js

Taking the previous example, we improve the usefulness of our tables by providing sorting functionality via jQuery and the Tablesorter plugin. Click any column’s header to change the sort.

# | First Name | Last Name | Language
--- | --- | --- | ---
1 | Your | One | English
2 | Joe | Sixpack | English
3 | Stu | Dent | Code

    <script src="js/jquery/jquery.tablesorter.min.js"></script>
    <script >
      $(function() {
        $("table#sortTableExample").tablesorter({ sortList: [[1,0]] });
      });
    </script>
    <table class="common-table zebra-striped">
      ...
    </table>

# Forms

## Default styles

All forms are given default styles to present them in a readable and scalable way. Styles are provided for text inputs, select lists, textareas, radio buttons and checkboxes, and buttons.

Example form legend
X-Large Input
Select
Select
Uneditable Input
Some Value Here
Disabled Input
X-Large Input
Small snippet of help text
Example form legend
Prepended Text
@
Prepended Checkbox
Appended Checkbox
File Input
Example form legend
List of Options

- Option one is this and that—be sure to include why it’s great
- Option two can also be checked and included in form results
- Option three can—yes, you guessed it—also be checked and included in form results
- Option four cannot be checked as it is disabled.

Note: Labels surround all the options for much larger click areas and a more usable form.
Date Range
to All times are shown as Pacific Standard Time (GMT -08:00).
Textarea
Block of help text to describe the field above if need be.
List of Options

- Option one is this and that—be sure to include why it’s great
- Option two can also be checked and included in form results

## Stacked forms

Add `.form-stacked` to your form’s HTML and you’ll have labels on top of their fields instead of to their left. This works great if your forms are short or you have two columns of inputs for heavier forms.

Example form legend
X-Large Input
Select
Example form legend
List of Options

- Option one is this and that—be sure to include why it’s great
- Option two can also be checked and included in form results

Note: Labels surround all the options for much larger click areas and a more usable form.

## Buttons

As a convention, buttons are used for actions while links are used for objects. For instance, "Download" could be a button and "recent activity" could be a link.

All buttons default to a light gray style, but a blue `.primary` class is available. Plus, rolling your own styles is easy peasy.

### Example buttons

Button styles can be applied to anything with the `.btn` applied. Typically you’ll want to apply these to only `a`, `button`, and select `input` elements. Here’s how it looks:

### Alternate sizes

Fancy larger or smaller buttons? Have at it!

Primary action Action
Primary action Action

### Disabled state

For buttons that are not active or are disabled by the app for one reason or another, use the disabled state. That’s `.disabled` for links and `:disabled` for `button` elements.

#### Links

Primary action Action

#### Buttons

# Navigation

## Fixed topbar

### Project Name

- Home
- Link
- Link
- Link

#### What is it

Our topbar is a fixed bar that houses a website’s logo or name, primary navigation, and search form.

#### Customizable

All elements within, and the entire topbar as well, are optional. You can choose to include a logo/name, nav, search, and a secondary nav—or any combination of that.

#### Dropdowns included

As part of the main navigation, we’ve included the ability for you to add dropdowns to your nav. Check out the secondary nav above (right aligned) to see how it’s done.

## Tabs and pills

Create simple secondary navigation with a `ul`. Swap between tabs or pills by adding the appropriate class.

Great for sub-sections of content like our account settings pages and user timelines for toggling between pages of like content. Available in tabbed or pill styles.

- Home
- Profile
- Messages
- Settings
- Contact

    <ul class="tabs">
      <li class="active"><a href="">Home</a></li>
      <li><a href="">Profile</a></li>
      <li><a href="">Messages</a></li>
      <li><a href="">Settings</a></li>
      <li><a href="">Contact</a></li>
    </ul>

- Home
- Profile
- Messages
- Settings
- Contact

    <ul class="pills">
      <li class="active"><a href="">Home</a></li>
      <li><a href="">Profile</a></li>
      <li><a href="">Messages</a></li>
      <li><a href="">Settings</a></li>
      <li><a href="">Contact</a></li>
    </ul>

## Pagination

Ultra simplistic and minimally styled pagination inspired by Rdio. The large block is hard to miss, easily scalable, and provides large click areas.

- ← Previous
- 1
- 2
- 3
- 4
- 5
- Next →

- ← Previous
- 10
- 11
- 12
- …
- 19
- 20
- 21
- Next →

- ← Previous
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- Next →

    <div class="pagination">
      <ul>
        <li class="prev disabled"><a href="">&larr; Previous</a></li>
        <li class="active"><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 class="next"><a href="">Next &rarr;</a></li>
      </ul>
    </div>

# Alerts & Errors Styles for success, warning, and error messages or alerts

## Basic alerts

One-line messages for highlighting the failure, possible failure, or success of an action. Particularly useful for forms.

×

Oh snap! Change this and that and try again.

×

Holy gaucamole! Best check yo self, you’re not looking too good.

×

Well done! You successfully read this alert message.

×

Heads up! This is an alert that needs your attention, but it’s not a huge priority just yet.

## Block messages

For messages that require a bit of explanation, we have paragraph style alerts. These are perfect for bubbling up longer error messages, warning a user of a pending action, or just presenting information for more emphasis on the page.

×

Oh snap! You got an error! Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

Take this action Or do this

×

Holy gaucamole! This is a warning! 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.

Take this action Or do this

×

Well done! You successfully read this alert message. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas faucibus mollis interdum.

Take this action Or do this

×

Heads up! This is an alert that needs your attention, but it’s not a huge priority just yet.

Take this action Or do this

# Popovers Components for displaying content in modals, tooltips, and popovers

## Modals

Modals—dialogs or lightboxes—are great for contextual actions in situations where it’s important that the background context be maintained.

### Modal Heading

×

One fine body…

## Tool Tips

Twipsies are super useful for aiding a confused user and pointing them in the right direction.

Lorem ipsum dolar sit amet illo error ipsum veritatis aut iste perspiciatis iste voluptas natus illo quasi odit aut natus consequuntur consequuntur, aut natus illo voluptatem odit perspiciatis laudantium rem doloremque totam voluptas. Voluptasdicta eaque beatae aperiam ut enim voluptatem explicabo explicabo, voluptas quia odit fugit accusantium totam totam architecto explicabo sit quasi fugit fugit, totam doloremque unde sunt sed dicta quae accusantium fugit voluptas nemo voluptas voluptatem rem quae aut veritatis quasi quae.

below!
right!
left!
above!

## Popovers

Use popovers to provide subtextual information to a page without effecting layout.

### Popover Title

Etiam porta sem malesuada magna mollis euismod. Maecenas faucibus mollis interdum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

# Using Bootstrap with Less Supercharge your CSS with variables, mixins, and functions

Bootstrap was built with Preboot, an open-source pack of mixins and variables to be used in conjunction with Less, a CSS preprocessor for faster and easier web development.

Check out how we used Preboot in Bootstrap and how you can make use of it should you choose to run Less on your next project.

## How to use it

Use this option to make full use of Bootstrap’s Less variables, mixins, and nesting in CSS via javascript in your browser.

    <link rel="stylesheet/less" href="less/bootstrap.less" media="all" />
    <script src="js/less-1.0.41.min.js"></script>

Not feeling the .js solution? Try the Less Mac app or use Node.js to compile when you deploy your code.

## What’s included

Here are some of the highlights of what’s included in Twitter Bootstrap as part of Bootstrap. Head over to the Bootstrap website or Github project page to download and learn more.

### Color variables

Variables in Less are perfect for maintaining and updating your CSS headache free. When you want to change a color value or a frequently used value, update it in one spot and you’re set.

    // Links
    @linkColor:         #8b59c2;
    @linkColorHover:    darken(@linkColor, 10);

    // Grays
    @black:             #000;
    @grayDark:          lighten(@black, 25%);
    @gray:              lighten(@black, 50%);
    @grayLight:         lighten(@black, 70%);
    @grayLighter:       lighten(@black, 90%);
    @white:             #fff;

    // Accent Colors
    @blue:              #08b5fb;
    @green:             #46a546;
    @red:               #9d261d;
    @yellow:            #ffc40d;
    @orange:            #f89406;
    @pink:              #c3325f;
    @purple:            #7a43b6;

    // Baseline
    @baseline:          20px;

### Commenting

Less also provides another style of commenting in addition to CSS’s normal `/* ... */` syntax.

    // This is a comment
    /* This is also a comment */

### Mixins up the wazoo

Mixins are basically includes or partials for CSS, allowing you to combine a block of code into one. They’re great for vendor prefixed properties like `box-shadow`, cross-browser gradients, font stacks, and more. Below is a sample of the mixins that are included with Bootstrap.

#### Font stacks

    #font {
      .shorthand(@weight: normal, @size: 14px, @lineHeight: 20px) {
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
      .sans-serif(@weight: normal, @size: 14px, @lineHeight: 20px) {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
      .serif(@weight: normal, @size: 14px, @lineHeight: 20px) {
        font-family: "Georgia", Times New Roman, Times, sans-serif;
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
      .monospace(@weight: normal, @size: 12px, @lineHeight: 20px) {
        font-family: "Monaco", Courier New, monospace;
        font-size: @size;
        font-weight: @weight;
        line-height: @lineHeight;
      }
    }

#### Gradients

    #gradient {
      .horizontal (@startColor: #555, @endColor: #333) {
        background-color: @endColor;
        background-repeat: repeat-x;
        background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor)); // Konqueror
        background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
        background-image: -ms-linear-gradient(left, @startColor, @endColor); // IE10
        background-image: -webkit-gradient(linear, left top, right top, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+
        background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
        -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor); // IE8+
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",@startColor,@endColor)); // IE6 & IE7
        background-image: linear-gradient(left, @startColor, @endColor); // Le standard
      }
      .vertical (@startColor: #555, @endColor: #333) {
        background-color: @endColor;
        background-repeat: repeat-x;
        background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor)); // Konqueror
        background-image: -moz-linear-gradient(@startColor, @endColor); // FF 3.6+
        background-image: -ms-linear-gradient(@startColor, @endColor); // IE10
        background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @startColor), color-stop(100%, @endColor)); // Safari 4+, Chrome 2+
        background-image: -webkit-linear-gradient(@startColor, @endColor); // Safari 5.1+, Chrome 10+
        background-image: -o-linear-gradient(@startColor, @endColor); // Opera 11.10
        -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor); // IE8+
        filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@startColor,@endColor)); // IE6 & IE7
        background-image: linear-gradient(@startColor, @endColor); // The standard
      }
      .directional (@startColor: #555, @endColor: #333, @deg: 45deg) {
        ...
      }
      .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 0.5, @endColor: #c3325f) {
        ...
      }
    }

### Operations and grid system

Get fancy and perform some math to generate flexible and powerful mixins like the one below.

    // Griditude
    @gridColumns:       16;
    @gridColumnWidth:   40px;
    @gridGutterWidth:   20px;

    // Grid System
    .container {
      width: @siteWidth;
      margin: 0 auto;
      .clearfix();
    }
    .columns(@columnSpan: 1) {
      display: inline;
      float: left;
      width: (@gridColumnWidth * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1));
      margin-left: @gridGutterWidth;
      &:first-child {
        margin-left: 0;
      }
    }
    .offset(@columnOffset: 1) {
      margin-left: (@gridColumnWidth * @columnOffset) + (@gridGutterWidth * (@columnOffset - 1)) !important;
    }