# Global styles for CSS reset, typography, and links

## Requires HTML5 doctype

Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

    <!DOCTYPE html>
    <html lang="en">
      ...
    </html>

## Typography and links

Bootstrap sets basic global display, typography, and link styles. Specifically, we:

- Remove `margin` on the body
- Set `background-color: white;` on the `body`
- Use the `@baseFontFamily`, `@baseFontSize`, and `@baseLineHeight` attributes as our typographyic base
- Set the global link color via `@linkColor` and apply link underlines only on `:hover`

These styles can be found within scaffolding.less.

## Reset via Normalize

With Bootstrap 2, the old reset block has been dropped in favor of Normalize.css, a project by Nicolas Gallagher that also powers the HTML5 Boilerplate. While we use much of Normalize within our reset.less, we have removed some elements specifically for Bootstrap.

# Default grid system 12 columns with a responsive twist

## Live grid example

The default Bootstrap grid system utilizes 12 columns, making for a 940px wide container without responsive features enabled. With the responsive CSS file added, the grid adapts to be 724px and 1170px wide depending on your viewport. Below 767px viewports, the columns become fluid and stack vertically.

1
1
1
1
1
1
1
1
1
1
2
4
4
4
6
5
5
10

### Basic grid HTML

For a simple two column layout, create a `.row` and add the appropriate number of `.span*` columns. As this is a 12-column grid, each `.span*` spans a number of those 12 columns, and should always add up to 12 for each row.

    <div class="row">
      <div class="span4">...</div>
      <div class="span8">...</div>
    </div>

Given this example, we have `.span4` and `.span8`, making for 12 total columns and a complete row.

## Offsetting columns

Move columns to the left using `.offset*` classes. Each class increases the left margin of a column by a whole column. For example, `.offset4` moves `.span4` over four columns.

4
4 offset 2
3 offset 2
3 offset 2
6 offset 4

    <div class="row">
      <div class="span4">...</div>
      <div class="span4 offset4">...</div>
    </div>

## Nesting columns

To nest your content with the default grid, add a new `.row` and set of `.span*` columns within an existing `.span*` column. Nested rows should include a set of columns that add up to the number of columns of its parent.

### Example

Here two nested `.span4` columns are placed within a `.span8`.

Level 1 of column
Level 2
Level 2

    <div class="row">
      <div class="span10">
        Level 1 column
        <div class="row">
          <div class="span5">Level 2</div>
          <div class="span5">Level 2</div>
        </div>
      </div>
    </div>

# Fluid grid system 12 responsive, percent-based columns

## Live fluid grid example

The fluid grid system uses percents instead of pixels for column widths. It has the same responsive capabilities as our fixed grid system, ensuring proper proportions for key screen resolutions and devices.

1
1
1
1
1
1
1
1
1
1
1
1
4
4
4
4
8
6
6
12

### Basic fluid grid HTML

Make any row "fluid" by changing `.row` to `.row-fluid`. The column classes stay the exact same, making it easy to flip between fixed and fluid grids.

    <div class="row-fluid">
      <div class="span4">...</div>
      <div class="span8">...</div>
    </div>

## Fluid offsetting

Operates the same way as the fixed grid system offsetting: add `.offset*` to any column to offset by that many columns.

4
4 offset 4
3 offset 3
3 offset 3
6 offset 6

    <div class="row-fluid">
      <div class="span4">...</div>
      <div class="span4 offset2">...</div>
    </div>

## Fluid nesting

Nesting with fluid grids is a bit different: the number of nested columns should not match the parent's number of columns. Instead, each level of nested columns are reset because each row takes up 100% of the parent column.

Fluid 12
Fluid 6
Fluid 6

    <div class="row-fluid">
      <div class="span12">
        Level 1 of column
        <div class="row-fluid">
          <div class="span6">Level 2</div>
          <div class="span6">Level 2</div>
        </div>
      </div>
    </div>

# Grid customization

## Variables in LESS

The default grid is built on a few variables for easy customization via LESS. All variables can be found in variables.less.

Variable | Default value | Description
--- | --- | ---
`@gridColumns` | 12 | Number of columns
`@gridColumnWidth` | 60px | Width of each column
`@gridGutterWidth` | 20px | Negative space between columns
`@fluidGridColumnWidth` | 6.382978723% | Width of each fluid column
`@fluidGridGutterWidth` | 2.127659574% | Negative space between fluid columns

### How to customize

Modifying the grid means changing the three `@grid*` variables and recompiling Bootstrap. Change the grid variables in variables.less and use one of the four ways documented to recompile. If you're adding more columns, be sure to add the CSS for those in grid.less.

## Staying responsive

Customization of the grid only works at the default level, the 940px grid. To maintain the responsive aspects of Bootstrap, you'll also have to manually customize the grids in responsive.less until a future update improves this.

# Layouts Basic templates to create webpages

## Fixed layout

Provides a common fixed-width (and optionally responsive) layout with only `<div class="container">` required.

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

## Fluid layout

Create a fluid, two-column page with `<div class="container-fluid">`—great for applications and docs.

    <div class="container-fluid">
      <div class="row-fluid">
        <div class="span2">
          <!--Sidebar content-->
        </div>
        <div class="span10">
          <!--Body content-->
        </div>
      </div>
    </div>

# Responsive design Media queries for various devices and resolutions

## Enabling responsive features

Turn on responsive CSS in your project by including the proper meta tag and additional stylesheet within the `<head>` of your document. If you've compiled Bootstrap from the Customize page, you need only include the meta tag.

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="assets/css/bootstrap-responsive.css" rel="stylesheet">

Heads up! Bootstrap doesn't include responsive features by default at this time as not everything needs to be responsive. Instead of encouraging developers to remove this feature, we figure it best to enable it as needed.

## About responsive Bootstrap

Media queries allow for custom CSS based on a number of conditions—ratios, widths, display type, etc—but usually focuses around `min-width` and `max-width`.

- Modify the width of column in our grid
- Stack elements instead of float wherever necessary
- Resize headings and text to be more appropriate for devices

Use media queries responsibly and only as a start to your mobile audiences. For larger projects, do consider dedicated code bases and not layers of media queries.

## Supported devices

Bootstrap supports a handful of media queries in a single file to help make your projects more appropriate on different devices and screen resolutions. Here's what's included:

Label | Layout width | Column width | Gutter width
--- | --- | --- | ---
Phones | 480px and below | Fluid columns, no fixed widths
Phones to tablets | 767px and below | Fluid columns, no fixed widths
Portrait tablets | 768px and above | 42px | 20px
Default | 980px and up | 60px | 20px
Large display | 1200px and up | 70px | 30px

    /* Landscape phones and down */
    @media (max-width: 480px) { ... }

    /* Landscape phone to portrait tablet */
    @media (max-width: 767px) { ... }

    /* Portrait tablet to landscape and desktop */
    @media (min-width: 768px) and (max-width: 979px) { ... }

    /* Large desktop */
    @media (min-width: 1200px) { ... }

## Responsive utility classes

For faster mobile-friendly development, use these utility classes for showing and hiding content by device. Below is a table of the available classes and their effect on a given media query layout (labeled by device). They can be found in `responsive.less`.

Class | Phones 480px and below | Tablets 767px and below | Desktops 768px and above
--- | --- | --- | ---
`.visible-phone` | Visible | Hidden | Hidden
`.visible-tablet` | Hidden | Visible | Hidden
`.visible-desktop` | Hidden | Hidden | Visible
`.hidden-phone` | Hidden | Visible | Visible
`.hidden-tablet` | Visible | Hidden | Visible
`.hidden-desktop` | Visible | Visible | Hidden

### When to use

Use on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation.

### Responsive utilities test case

Resize your browser or load on different devices to test the above classes.

#### Visible on...

Green checkmarks indicate that class is visible in your current viewport.

- Phone✔ Phone
- Tablet✔ Tablet
- Desktop✔ Desktop

#### Hidden on...

Here, green checkmarks indicate that class is hidden in your current viewport.

- Phone✔ Phone
- Tablet✔ Tablet
- Desktop✔ Desktop