CSS Grid: Two-Dimensional Layout
13 min read
Introducing CSS Grid
CSS Grid is a two-dimensional layout system — it handles both rows and columns simultaneously. It is the best tool for page-level layout and complex component arrangements.
css
.grid-container {
display: grid;
/* Define columns: three equal-width columns */
grid-template-columns: 1fr 1fr 1fr;
/* repeat() shorthand */
grid-template-columns: repeat(3, 1fr);
/* Mixed sizes */
grid-template-columns: 250px 1fr;
/* Define rows */
grid-template-rows: auto 1fr auto;
/* Gap between cells */
gap: 1.5rem;
column-gap: 2rem;
row-gap: 1rem;
}Placing Items on the Grid
css
.header {
/* Span all 3 columns */
grid-column: 1 / -1;
}
.sidebar {
grid-column: 1 / 2;
grid-row: 2 / 4;
}
.main {
grid-column: 2 / -1;
grid-row: 2;
}
/* Named template areas */
.layout {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 240px 1fr;
grid-template-rows: auto 1fr auto;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }auto-fill and auto-fit
css
/* Responsive grid: as many 200px columns as fit, with no media queries */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 1rem;
}Use Grid for two-dimensional layouts (rows and columns) and Flexbox for one-dimensional ones (a row or a column). They work perfectly together — Grid for the page shell, Flexbox for components inside cells.
Ready to test yourself?
Practice CSS— quiz & coding exercises