CSS Grid Layout
CSS Grid is a two-dimensional layout system that arranges children into rows and columns defined by track sizes. Apply display: grid to a container, then define column and row tracks with grid-template-columns and grid-template-rows.
For one-dimensional layouts see flex-*.
Quick Start
.grid {
display: grid;
grid-template-columns: 1fr 2fr;
grid-template-rows: auto;
gap: 10pt;
}
Container Properties
These properties are set on the grid container (the element with display: grid).
Item Properties
These properties are set on grid items (direct children of the grid container).
Advanced Features
| Feature |
Summary |
Page |
| grid line names |
[name] bracket notation in track definitions |
grid line names v9.7 |
auto-fill / auto-fit in repeat() |
Fill tracks to fit container width |
grid-template-columns v9.7 |
Enabling Grid Layout
.container { display: grid; }
| Value |
Support |
grid |
Supported |
inline-grid |
Not supported |
Unsupported Features
| Feature |
Status |
minmax() |
Not supported |
subgrid |
Explicitly rejected — parse error if used |
inline-grid |
Not supported |
Examples
Three-column card grid
<style>
.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12pt; }
.card { padding: 15pt; background-color: #dbeafe; border: 1pt solid #2563eb; }
</style>
<div class="grid">
<div class="card"><h3>Feature A</h3><p>Description.</p></div>
<div class="card"><h3>Feature B</h3><p>Description.</p></div>
<div class="card"><h3>Feature C</h3><p>Description.</p></div>
</div>
Named-area page layout
<style>
.page {
display: grid;
grid-template-columns: 160pt 1fr;
grid-template-rows: 50pt 1fr 40pt;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
gap: 8pt;
}
.header { grid-area: header; background-color: #1e3a8a; color: white; padding: 12pt; }
.sidebar { grid-area: sidebar; background-color: #f3f4f6; padding: 12pt; }
.main { grid-area: main; padding: 12pt; }
.footer { grid-area: footer; background-color: #374151; color: white; padding: 10pt; }
</style>
<div class="page">
<div class="header">Report Header</div>
<div class="sidebar">Navigation</div>
<div class="main">Main content</div>
<div class="footer">Footer</div>
</div>
See Also