--- title: Columns powered by Flexbox layout: documentation doc-tab: grid doc-subtab: columns --- {% include subnav-grid.html %}

Columns

A simple way to build responsive columns


To build a grid, just:

  1. Add a columns container
  2. Add as many column elements as you want

Each column will have an equal width, no matter the number of columns.

First column

Second column

Third column

Fourth column

{% highlight html %}
First column
Second column
Third column
Fourth column
{% endhighlight %}

Sizes

If you want to change the size of a single column, you can use one the following classes:

  • is-three-quarters
  • is-two-thirds
  • is-half
  • is-one-third
  • is-one-quarter

The other columns will fill up the remaining space automatically.

is-three-quarters

Auto

Auto

is-two-thirds

Auto

Auto

is-half

Auto

Auto

is-one-third

Auto

Auto

is-one-quarter

Auto

{% highlight html %}

is-three-quarters

Auto

Auto

is-two-thirds

Auto

Auto

is-half

Auto

Auto

is-one-third

Auto

Auto

is-one-quarter

Auto

{% endhighlight %}

12 columns

As the grid can be divided into 12 columns, there are size classes for each division:

  • is-2
  • is-3
  • is-4
  • is-5
  • is-6
  • is-7
  • is-8
  • is-9
  • is-10
  • is-11

Naming

Each modifier class is named after how many columns you want out of 12. So if you want 7 columns out of 12, use is-7.

is-2

1

1

1

1

1

1

1

1

1

1

is-3

1

1

1

1

1

1

1

1

1

is-4

1

1

1

1

1

1

1

1

is-5

1

1

1

1

1

1

1

is-6

1

1

1

1

1

1

is-7

1

1

1

1

1

is-8

1

1

1

1

is-9

1

1

1

is-10

1

1

is-11

1


Offset

While you can use empty columns (like <div class="column"></div>) to create horizontal space around .column elements, you can also use offset modifiers like .is-offset-x:

is-half
is-offset-one-quarter

is-4
is-offset-8

is-11
is-offset-1

{% highlight html %}
{% endhighlight %}

Centering columns

While you can use empty columns (like <div class="column"></div>) to create horizontal space around .column elements, you can also use .is-centered on the parent .columns element:

is-half
is-narrow

{% highlight html %}

is-half
is-narrow

{% endhighlight %}

Use with .is-multiline to create a flexible, centered list (try resizing to see centering in different viewport sizes):

is-narrow
First Column

is-narrow
Our Second Column

is-narrow
Third Column

is-narrow
The Fourth Column

is-narrow
Fifth Column

{% highlight html %}

is-narrow
First Column

is-narrow
Our Second Column

is-narrow
Third Column

is-narrow
The Fourth Column

is-narrow
Fifth Column

{% endhighlight %}

Responsiveness

By default, columns are only activated from tablet onwards. This means columns are stacked on top of each other on mobile.

If you want columns to work on mobile too, just add the is-mobile modifier on the columns container:

1

2

3

4

{% highlight html %}
1
2
3
4
{% endhighlight %}

Resize

If you want to see the difference, resize your browser and see when the columns are stacked and when they are horizontally distributed.

If you only want columns on desktop, just use the is-desktop modifier on the columns container:

1

2

3

4

{% highlight html %}
1
2
3
4
{% endhighlight %}

Different sizes per breakpoint

You can define a column size for each viewport size: mobile, tablet, and desktop.

is-half-mobile
is-one-third-tablet
is-one-quarter-desktop

1

1

1

1

Resize

If you want to see these classes in action, resize your browser window and see how the same column varies in width at each breakpoint.

{% highlight html %}
is-half-mobile
is-one-third-tablet
is-one-quarter-desktop
1
1
1
1
{% endhighlight %}

Nesting

You can nest columns to have more flexibility in your design. You only need to follow this structure:

  • columns: top-level columns container
    • column
      • columns: nested columns
        • column and so on…

The difference with multiline columns is the order in the HTML code: all the blue columns appear before the red ones. Resize to a narrower viewport to see the result.

First column

First nested column

Second nested column

Second column

50%

Auto

Auto

{% highlight html %}
First column
First nested column
Second nested column
Second column
50%
Auto
Auto
{% endhighlight %}

Multiline

Whenever you want to start a new line, you can close a columns container and start a new one. But you can also add the is-multiline modifier and add more column elements that would fit in a single row.

is-one-quarter

is-one-quarter

is-one-quarter

is-one-quarter

is-half

is-one-quarter

is-one-quarter

is-one-quarter

Auto

{% highlight html %}
is-one-quarter
is-one-quarter
is-one-quarter
is-one-quarter
is-half
is-one-quarter
is-one-quarter
Auto
{% endhighlight %}

Gapless

If you want to remove the space between the columns, add the is-gapless modifier on the columns container:

First column

Second column

Third column

Fourth column

{% highlight html %}
First column
Second column
Third column
Fourth column
{% endhighlight %}

You can combine it with the is-multiline modifier:

is-one-quarter

is-one-quarter

is-one-quarter

is-one-quarter

is-half

is-one-quarter

is-one-quarter

is-one-quarter

Auto

{% highlight html %}
is-one-quarter
is-one-quarter
is-one-quarter
is-one-quarter
is-half
is-one-quarter
is-one-quarter
Auto
{% endhighlight %}

Narrow column

If you want a column to only take the space it needs, use the is-narrow modifier. The other column(s) will fill up the remaining space.

Narrow column

This column is only 200px wide.

Flexible column

This column will take up the remaining space available.

{% highlight html %}

Narrow column

This column is only 200px wide.

Flexible column

This column will take up the remaining space available.

{% endhighlight %}

As for the size modifiers, you can have narrow columns for different breakpoints:

  • is-narrow-mobile
  • is-narrow-tablet
  • is-narrow-desktop