Skip to content

Grid

Columns, rows and gaps, set in one class.

grid makes an element a grid container. Add modifiers for columns, rows and gaps.

ModifierValuesCompiles toExample
Columnscols-1 to cols-12, or cols-1-fr to cols-12-frgrid-template-columnsgrid:cols-3
Rowsrows-1 to rows-12, or rows-1-fr to rows-12-frgrid-template-rowsgrid:rows-2
Gapgap- plus a spacing tokengapgrid:gap-d4
Column gapcolgap- plus a spacing tokencolumn-gapgrid:colgap-d6
Row gaprowgap- plus a spacing tokenrow-gapgrid:rowgap-d2

cols-3 compiles to repeat(3,auto), which sizes columns by their content, so wider content gets a wider column. cols-3-fr compiles to repeat(3,1fr): equal columns that share the space.

Three equal columns
<div class="grid:cols-3-fr:gap-d4">…</div>

For card grids that reflow on their own, see grid-auto.

Spanning

col-spans and row-spans place an item between two grid lines. Lines are numbered from 1, and the end line isn’t included, so from-1:to-3 covers two columns.

PropertyModifiersCompiles toExample
col-spansfrom- and to- plus a numbergrid-column-start, grid-column-endcol-spans:from-1:to-3
row-spansfrom- and to- plus a numbergrid-row-start, grid-row-endrow-spans:from-2:to-4
col-spans-allnone (standalone)grid-column: 1 / -1col-spans-all
row-spans-allnone (standalone)grid-row: 1 / -1row-spans-all
A header across all columns
<div class="grid:cols-3-fr:gap-d4">
<header class="col-spans-all">…</header>
<main class="col-spans:from-1:to-3">…</main>
<aside>…</aside>
</div>

Named areas and auto tracks

These take literal CSS in parentheses, with _ for spaces.

PropertyCompiles toExample
grid-template-areasgrid-template-areasgrid-template-areas:('head_head'_'side_main')
grid-areagrid-areagrid-area:(head)
auto-colgrid-auto-columnsauto-col:(minmax(100px,_auto))
auto-rowgrid-auto-rowsauto-row:(minmax(20%,_80vmax))
auto-flowgrid-auto-flowauto-flow:(row_dense)
A layout drawn with named areas
<div class="grid:cols-2-fr:gap-d4 grid-template-areas:('head_head'_'side_main')">
<header class="grid-area:(head)">…</header>
<nav class="grid-area:(side)">…</nav>
<main class="grid-area:(main)">…</main>
</div>