Grid

Luma is based on a Flexbox-Grid, which means that your are no longer bound by annoying float-based layouts. Simply specify a row and add as many columns as you need. They will automatically take up all the available space. You can of course also define fixed width percentages in the classic 12-grid system. A column is-4 will take up exactly one third of the available space. You’re also free to define an offset.

On mobile, all columns will automatically be displayed on top of each other.

Additionally to its grid system, Luma also comes with a helpful container class that you can use to horizontally center and limit your content. Its width depends on the viewport size:

Viewport Container width
Small (<768px) 100%
Medium (<992px) 750px
Large (<1225px) 960px
Widescreen (>1225px) 1152px
<div class="container">
    <!-- Your content -->
</div>

column is-4

column is-8

column is-6

column is-2

column

column

column

column

column

<div class="row">
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-8">
        <p><code>column is-8</code></p>
    </div>
</div>
<div class="row">
    <div class="column is-6">
        <p><code>column is-6</code></p>
    </div>
    <div class="column is-2">
        <p><code>column is-2</code></p>
    </div>
    <div class="column">
        <p><code>column</code></p>
    </div>
</div>
<div class="row">
    <div class="column">
        <p><code>column</code></p>
    </div>
    <div class="column">
       <p><code>column</code></p>
    </div>
    <div class="column">
        <p><code>column</code></p>
    </div>
    <div class="column">
        <p><code>column</code></p>
    </div>
</div>

Offsets

You can use the is-offset-* class to add an offset to a column:

column is-4

column is-4 is-offset-4

column is-8 is-offset-4

<div class="row">
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4 is-offset-4">
        <p><code>column is-4 is-offset-4</code></p>
    </div>
</div>
<div class="row">
    <div class="column is-8 is-offset-4">
        <p><code>column is-8 is-offset-4</code></p>
    </div>
</div>

Gutters

By default, Luma uses a gutter width of 1rem (10px) as the spacing between columns. You can remove this by adding the no-gutters class to a row:

column is-3

column is-3

column is-6

<div class="row no-gutters">
    <div class="column is-3">
        <p><code>column is-3</code></p>
    </div>
    <div class="column is-3">
        <p><code>column is-3</code></p>
    </div>
    <div class="column is-6">
        <p><code>column is-6</code></p>
    </div>
</div>

Alignment

You can use flexbox alignment utilities to vertically and horizontally align columns.

column

column

column

column

column

column

column

column

column

In this example, the first row has an additional is-top class, the second row is-center and the third row is-bottom.

<div class="row is-center no-gutters">
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
</div>

You can always override this for each column individually using the same classes, but this time applied to the column itself:

column

column

column

<div class="row is-top no-gutters">
    <div class="column">
        <p><code>column</code></p>
    </div>
    <div class="column is-center">
        <p><code>column</code></p>
    </div>
    <div class="column is-bottom">
        <p><code>column</code></p>
    </div>
</div>

Column Breaks

By adding a is-multiline class to your row, you can add more columns than would normally fit in a 12 grid system. They will automatically break onto the next line:

column is-4

column is-4

column is-4

column is-4

column is-4

<div class="row is-multiline">
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
    <div class="column is-4">
        <p><code>column is-4</code></p>
    </div>
</div>

Nesting

You can nest rows for more flexibility. Simply add another row inside your column:

First column

column

column

Second column

column

column

<div class="row">
    <div class="column is-4">
        <p><code>First column</code></p>
        <div class="row">
            <div class="column">
                <p><code>column</code></p>
            </div>
            <div class="column">
                <p><code>column</code></p>
            </div>
        </div>
    </div>
    <div class="column is-8">
        <p><code>Second column</code></p>
        <div class="row">
            <div class="column">
                <p><code>column</code></p>
            </div>
            <div class="column">
                <p><code>column</code></p>
            </div>
        </div>
    </div>
</div>