Skip to content

CSS Grid

Utilities for building two-dimensional layouts with CSS Grid. All classes support responsive prefixes.

Enable grid

Use d-grid or d-inline-grid from the Display utilities to activate a grid context.

html
<div class="d-grid grid-cols-3 gap-4">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

grid-template-columns

Define the number of equal columns using fractional units.

ClassCSS
grid-cols-1grid-template-columns: repeat(1, minmax(0, 1fr))
grid-cols-2grid-template-columns: repeat(2, minmax(0, 1fr))
grid-cols-3grid-template-columns: repeat(3, minmax(0, 1fr))
grid-cols-4grid-template-columns: repeat(4, minmax(0, 1fr))
grid-cols-6grid-template-columns: repeat(6, minmax(0, 1fr))
grid-cols-12grid-template-columns: repeat(12, minmax(0, 1fr))
grid-cols-nonegrid-template-columns: none

Classes are generated for 1 through 12.

grid-template-rows

ClassCSS
grid-rows-1grid-template-rows: repeat(1, minmax(0, 1fr))
grid-rows-2grid-template-rows: repeat(2, minmax(0, 1fr))
grid-rows-3grid-template-rows: repeat(3, minmax(0, 1fr))
grid-rows-6grid-template-rows: repeat(6, minmax(0, 1fr))
grid-rows-nonegrid-template-rows: none

Classes are generated for 1 through 6.

Column span

Control how many columns an item spans.

ClassCSS
col-span-1grid-column: span 1 / span 1
col-span-2grid-column: span 2 / span 2
col-span-6grid-column: span 6 / span 6
col-span-12grid-column: span 12 / span 12
col-span-fullgrid-column: 1 / -1
html
<div class="d-grid grid-cols-12 gap-4">
  <div class="col-span-8">Main content</div>
  <div class="col-span-4">Sidebar</div>
</div>

Row span

ClassCSS
row-span-1grid-row: span 1 / span 1
row-span-2grid-row: span 2 / span 2
row-span-fullgrid-row: 1 / -1

Classes are generated for 1 through 6.

Column start / end

Explicitly place items by line number.

ClassCSS
col-start-1col-start-13grid-column-start: N
col-end-1col-end-13grid-column-end: N
col-start-autogrid-column-start: auto
col-end-autogrid-column-end: auto

Row start / end

ClassCSS
row-start-1row-start-7grid-row-start: N
row-end-1row-end-7grid-row-end: N
row-start-autogrid-row-start: auto
row-end-autogrid-row-end: auto

grid-auto-flow

Control how auto-placed items fill the grid.

ClassCSS
grid-flow-rowgrid-auto-flow: row
grid-flow-colgrid-auto-flow: column
grid-flow-densegrid-auto-flow: dense
grid-flow-row-densegrid-auto-flow: row dense
grid-flow-col-densegrid-auto-flow: column dense

grid-auto-columns / grid-auto-rows

Size implicitly created tracks.

ClassCSS
auto-cols-autogrid-auto-columns: auto
auto-cols-mingrid-auto-columns: min-content
auto-cols-maxgrid-auto-columns: max-content
auto-cols-frgrid-auto-columns: minmax(0, 1fr)
auto-rows-autogrid-auto-rows: auto
auto-rows-mingrid-auto-rows: min-content
auto-rows-maxgrid-auto-rows: max-content
auto-rows-frgrid-auto-rows: minmax(0, 1fr)

place-items

Shorthand for align-items + justify-items.

ClassValue
place-items-startstart
place-items-endend
place-items-centercenter
place-items-stretchstretch
place-items-baselinebaseline

place-content

Shorthand for align-content + justify-content.

ClassValue
place-content-startstart
place-content-endend
place-content-centercenter
place-content-stretchstretch
place-content-betweenspace-between
place-content-aroundspace-around
place-content-evenlyspace-evenly

place-self

Shorthand for align-self + justify-self on a single item.

ClassValue
place-self-autoauto
place-self-startstart
place-self-endend
place-self-centercenter
place-self-stretchstretch

Responsive variants

All grid utilities support breakpoint prefixes. Apply from a breakpoint upward (mobile-first):

html
<!-- 1 col on mobile → 2 on sm → 3 on md → 4 on lg -->
<div class="d-grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
</div>

Responsive column span:

html
<div class="d-grid grid-cols-12 gap-4">
  <!-- full width on mobile, 8/12 on md+ -->
  <div class="col-span-12 md:col-span-8">Main</div>
  <div class="col-span-12 md:col-span-4">Aside</div>
</div>

Examples

Dashboard layout — 12-column grid:

html
<div class="d-grid grid-cols-12 gap-4">
  <div class="col-span-12 md:col-span-3">Sidebar</div>
  <div class="col-span-12 md:col-span-6">Content</div>
  <div class="col-span-12 md:col-span-3">Widgets</div>
</div>

Card grid — auto-responsive:

html
<div class="d-grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
  <div class="col-span-1 sm:col-span-2 lg:col-span-1">Featured card</div>
  <div>Card</div>
  <div>Card</div>
</div>

Centered item:

html
<div class="d-grid grid-cols-3 grid-rows-3 place-items-center" style="height: 300px">
  <div class="col-start-2 row-start-2">Centered</div>
</div>

For arbitrary values like grid-template-columns: repeat(5, 120px) use @vueland/utils-jit JIT classes: grid-cols-[repeat(5,120px)].