1. Basic Layout (Header, Sidebar, Main, Footer)
Using grid-template-areas to create a visual map of your
layout.
.layout-1 {
display: grid;
grid-template-areas:
"header header
header"
"sidebar main main"
"footer footer
footer";
grid-template-columns: 250px 1fr 1fr;
gap: 20px;
}
.item-header { grid-area: header; }
.item-sidebar { grid-area: sidebar; }
.item-main { grid-area: main; }
.item-footer { grid-area: footer; }
2. With Right Sidebar (Holy Grail Layout)
Header, left sidebar, main content, right sidebar, footer.
.layout-2 {
display: grid;
grid-template-areas:
"header header
header"
"sidebar main
right"
"footer footer
footer";
grid-template-columns: 200px 1fr 200px;
gap: 20px;
}
3. Complex Layout (Multiple Rows)
A more advanced layout with featured sections.
📄 MAIN CONTENT
✨ FEATURE 1
✨ FEATURE 2
.layout-3 {
display: grid;
grid-template-areas:
"header header header
header"
"sidebar main main
right"
"sidebar feature1
feature2 right"
"footer footer footer
footer";
grid-template-columns: 200px 1fr 1fr 200px;
gap: 20px;
}
4. Blog Layout (Main + Sidebar)
Perfect for blog posts with a sidebar for author info, related posts,
etc.
Blog Post Title
This is the main blog content. Grid areas make it easy to arrange
header, main content, sidebar, and footer.
.layout-4 {
display: grid;
grid-template-areas:
"header header"
"main sidebar"
"footer footer";
grid-template-columns: 1fr 300px;
gap: 20px;
}
5. Dashboard Layout
Perfect for admin dashboards with stats, charts, and data tables.
📈 Users
1,234
💰 Revenue
$12,345
📉 Sales
+23%
📊 CHART 1
📈 CHART 2
📉 CHART 3
📋 DATA TABLE
.layout-5 {
display: grid;
grid-template-areas:
"header header
header"
"stats stats stats"
"chart1 chart2
chart3"
"table table
table";
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
📚 Grid Areas Rules
/* =================================== GRID AREAS RULES
=================================== */ 1. Each area name must be
unique 2. Use the SAME name to span multiple cells 3. Use a period (.)
for an empty cell 4. Each row must have the SAME number of columns 5.
Define areas with a string for each row 6. Use grid-area property to
assign elements /* =================================== EMPTY CELLS
EXAMPLE =================================== */ grid-template-areas:
"header header header" "sidebar . main" /* . = empty cell */ "footer
footer footer"; /* =================================== RESPONSIVE GRID
AREAS =================================== */ @media (max-width: 768px)
{ .layout { grid-template-areas: "header" "sidebar" "main" "footer";
grid-template-columns: 1fr; } }
🧠 Quick Quiz
/* Question 1: How do you define grid areas? */ /* Answer:
grid-template-areas with string values */ /* Question 2: How do you
make an empty cell? */ /* Answer: Use a period (.) */ /* Question 3:
What property assigns an element to an area? */ /* Answer: grid-area:
areaname; */ /* Question 4: What happens if rows have different
numbers of columns? */ /* Answer: The layout breaks. Each row must
have same number of cells. */ /* Question 5: Can grid areas be
responsive? */ /* Answer: Yes! Change grid-template-areas inside media
queries */