Logo
hummingbird

Bootstrap Grid

The Bootstrap Grid is a twelve-column, flexbox-based layout system recreated with Tailwind utilities. It provides a familiar row and column structure for building responsive designs.

Basic example

The Bootstrap Grid uses containers, rows, and columns to create responsive layouts. It is built with flexbox and adapts to different screen sizes.

Column
Column
Column

HTML

<div class='container text-center'>
  <div class='row'>
    <div class='col'>Column</div>
    <div class='col'>Column</div>
    <div class='col'>Column</div>
  </div>
</div>

Auto-layout columns

Use breakpoint-specific column classes for easy sizing of columns without adding explicit numbered classes like .col-sm-6.

Equal-width

Use the .col class to create equal-width columns for every screen size.

1 of 2
2 of 2
1 of 3
2 of 3
3 of 3

HTML

<div class="container text-center">
  <div class="row">
    <div class="col">1 of 2</div>
    <div class="col">2 of 2</div>
  </div>
  <div class="row">
    <div class="col">1 of 3</div>
    <div class="col">2 of 3</div>
    <div class="col">3 of 3</div>
  </div>
</div>

Setting one column width

Set the width of one column and let the other(s) automatically resize around it.

1 of 3
2 of 3 (wider)
3 of 3

HTML

<div class='container text-center'>
  <div class='row'>
    <div class='col'>1 of 3</div>
    <div class='col-6'>2 of 3 (wider)</div>
    <div class='col'>3 of 3</div>
  </div>
</div>

Variable width content

Use the .col-auto class to size columns based on the natural width of their content.

1 of 3
Variable width content
3 of 3
1 of 3
Variable width content
3 of 3

HTML

<div class='container text-center'>
  <div class='row md:justify-center mb-3'>
    <div class='col lg:col-2'>1 of 3</div>
    <div class='md:col-auto'>Variable width content</div>
    <div class='col lg:col-2'>3 of 3</div>
  </div>
  <div class='row'>
    <div class='col'>1 of 3</div>
    <div class='md:col-auto'>Variable width content</div>
    <div class='col lg:col-2'>3 of 3</div>
  </div>
</div>

Responsive classes

Use responsive column classes to specify different column sizes for different screen sizes. Breakpoints are based on minimum widths, meaning they apply to that one and all larger screens. For example, .md:col-4 applies to medium devices (tablets) and above.

All breakpoints

For grids that are the same across all breakpoints, use the .col and .col-{size} classes.

col
col
col
col
col-8
col-4

HTML

<div class="container text-center">
  <div class="row">
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="col">col</div>
  </div>
  <div class="row">
    <div class="col-8">col-8</div>
    <div class="col-4">col-4</div>
  </div>
</div>

Stacked to horizontal

Use breakpoint-specific column classes to create a stacked-to-horizontal layout, such as .sm:col-6 to create two columns starting at the small breakpoint.

sm:col-8
sm:col-4
sm:col
sm:col
sm:col

HTML

<div class="container text-center">
  <div class="row">
    <div class="sm:col-8">sm:col-8</div>
    <div class="sm:col-4">sm:col-4</div>
  </div>
  <div class="row">
    <div class="sm:col">sm:col</div>
    <div class="sm:col">sm:col</div>
    <div class="sm:col">sm:col</div>
  </div>
</div>

Mix and match

Mix and match different breakpoint-specific column classes for different screen sizes.

.md:col-8
.col-6 .md:col-4
.col-6 .md:col-4
.col-6 .md:col-4
.col-6 .md:col-4
.col-6
.col-6

HTML

<div class="container text-center">
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
  <div class="md:col-8">.md:col-8</div>
  <div class="col-6 md:col-4">.col-6 .md:col-4</div>
</div>

<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
  <div class="col-6 md:col-4">.col-6 .md:col-4</div>
  <div class="col-6 md:col-4">.col-6 .md:col-4</div>
  <div class="col-6 md:col-4">.col-6 .md:col-4</div>
</div>

<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
  <div class="col-6">.col-6</div>
  <div class="col-6">.col-6</div>
</div>
</div>

Row columns

Instead of specifying the number of columns per row, use the .row-cols-{number} classes to specify the number of columns per row. The grid will automatically layout the columns evenly. .row-cols-auto can be used to set the number of columns based on the content.

Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-2">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
  </div>
</div>
Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-3">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
  </div>
</div>
Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-auto">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
  </div>
</div>
Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-4">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
  </div>
</div>
Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-4">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col-6">Column</div>
    <div class="col">Column</div>
  </div>
</div>
Column
Column
Column
Column

HTML

<div class="container text-center">
  <div class="row row-cols-1 sm:row-cols-2 md:row-cols-4">
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
    <div class="col">Column</div>
  </div>
</div>

Nesting

Nesting is easy with the Bootstrap Grid. Just add a new .row and set of .col within an existing .col. This gives more control over the layout of the content.

Level 1: .sm:col-3
Level 2: .col-8 .sm:col-6
Level 2: .col-4 .sm:col-6

HTML

<div class="container text-center">
  <div class="row">
    <div class="sm:col-3">Level 1: .sm:col-3</div>
    <div class="sm:col-9">
      <div class="row">
        <div class="col-8 sm:col-6">Level 2: .col-8 .sm:col-6</div>
        <div class="col-4 sm:col-6">Level 2: .col-4 .sm:col-6</div>
      </div>
    </div>
  </div>
</div>

CSS variables

The Bootstrap Grid uses CSS variables for easy customization. Override these variables in your own CSS to change the grid’s behavior.

--grid-gutter-x: 1.5rem;
--grid-gutter-y: 0px;
--grid-columns: 12;
--grid-row-columns: 6;