CSSCSS Grid Introduction

CSS Grid Introduction

CSS Grid is a two-dimensional layout system for arranging items in rows and columns. It's powerful for complex layouts like page templates, dashboards, and card grids. Grid gives precise control over both horizontal and vertical alignment.

Grid Basics

CSS
/* Enable grid */
.container {
  display: grid;
  /* Children become grid items */
}

/* Define columns */
.grid {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  /* 3 columns: 200px, flexible, 200px */
}

/* Define rows */
.grid {
  display: grid;
  grid-template-rows: 60px 1fr 60px;
  /* Header, content, footer */
}

/* Gap between items */
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
Grid Units and Functions

Unit/Function

Purpose

Example

fr

Fractional unit

grid-template-columns: 1fr 2fr

repeat()

Repeat pattern

repeat(3, 1fr)

minmax()

Min/max sizing

minmax(200px, 1fr)

auto-fit

Auto columns

repeat(auto-fit, minmax(200px, 1fr))

CSS
/* Fr unit - proportional */
.grid {
  grid-template-columns: 1fr 2fr 1fr;
  /* 1:2:1 ratio columns */
}

/* Repeat function */
.grid {
  grid-template-columns: repeat(3, 1fr);
  /* 3 equal columns */
}

/* Minmax for responsive */
.grid {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  /* Min 200px, grows to 1fr */
}

/* Named template */
.grid {
  grid-template-columns: [sidebar] 250px [main] 1fr [right] 150px;
  /* Named grid lines */
}
Common Grid Layouts

CSS
/* Page layout */
.page {
  display: grid;
  grid-template-columns: 250px 1fr;
  grid-template-rows: 60px 1fr 60px;
  gap: 20px;
  height: 100vh;
}

/* Card gallery */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
  padding: 20px;
}

/* Dashboard */
.dashboard {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  grid-auto-rows: minmax(200px, auto);
}
Note
Grid is 2D layout (rows and columns). Use fr for flexible sizing, repeat() for patterns, gap for spacing. Perfect for complex layouts.
Next
Template areas: [grid-template-areas](/css/grid-template-areas).