Grid Layout Patterns
Holy grail, dashboard, gallery, and responsive grid patterns.
Overview
Common CSS Grid layout patterns for web applications.
Key Concepts
- Holy Grail — Classic header-sidebar-content-footer
- Dashboard — Complex grid with widgets
- Gallery — Image grid with varying sizes
- Pancake Stack — Vertical stacking sections
- Sidebar Layout — Content with sidebar
Code Examples
/* Holy grail layout */
.holy-grail {
display: grid;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
.header { grid-area: header; }
.nav { grid-area: nav; }
.main { grid-area: main; }
.aside { grid-area: aside; }
.footer { grid-area: footer; }
/* Dashboard */
.dashboard {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: minmax(100px, auto);
gap: 1rem;
}
.widget-wide { grid-column: span 2; }
.widget-tall { grid-row: span 2; }
/* Gallery */
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 0.5rem;
}
.gallery-item {
aspect-ratio: 1;
overflow: hidden;
}
.gallery-item.featured {
grid-column: span 2;
grid-row: span 2;
}
/* Pancake stack */
.pancake-stack {
display: grid;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
/* Sidebar layout */
.with-sidebar {
display: grid;
grid-template-columns: 250px 1fr;
min-height: 100vh;
}
/* Responsive sidebar */
.responsive-sidebar {
display: grid;
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.responsive-sidebar {
grid-template-columns: 250px 1fr;
}
}
/* Auto-fit cards */
.auto-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
/* Masonry-like */
.masonry {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 10px;
gap: 1rem;
}
.masonry-item:nth-child(1) { grid-row-end: span 12; }
.masonry-item:nth-child(2) { grid-row-end: span 8; }
.masonry-item:nth-child(3) { grid-row-end: span 15; }
Practice
Build a responsive dashboard with multiple grid patterns.