Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Create a Simple Webpage Layout Using CSS Grid Template Areas
📖 Scenario: You are building a simple webpage layout with a header, sidebar, main content area, and footer. You want to arrange these sections visually using CSS Grid with named areas.
🎯 Goal: Build a webpage layout using CSS Grid and grid-template-areas to place the header, sidebar, main content, and footer in the correct positions.
📋 What You'll Learn
Use a container with CSS Grid display
Define grid template areas with names: header, sidebar, main, and footer
Assign each section to its grid area using grid-area
The layout should have the header spanning the top, sidebar on the left, main content on the right, and footer at the bottom
💡 Why This Matters
🌍 Real World
Web developers often use CSS Grid template areas to create clean, understandable layouts for websites and apps. This method helps organize content visually and semantically.
💼 Career
Knowing CSS Grid and template areas is essential for front-end developers to build responsive and maintainable web layouts efficiently.
Progress0 / 4 steps
1
Create the HTML structure with semantic elements
Write the HTML code to create a <div> with class container that contains four child elements: <header>, <aside>, <main>, and <footer>. Each child should have text content matching its tag name (e.g., "Header" inside <header>).
CSS
Hint
Use semantic HTML tags inside the container div. Each section should have its name as text.
2
Set up the container as a CSS Grid and define grid template areas
In CSS, select the .container class and set display: grid;. Then add a grid-template-areas property with these exact values: "header header" "sidebar main" "footer footer"
CSS
Hint
Use display: grid; and define grid-template-areas exactly as shown.
3
Assign grid areas to each section using grid-area
In the CSS, assign each child element a grid-area property with the exact names: header for header, sidebar for aside, main for main, and footer for footer.
CSS
Hint
Use grid-area with the exact area names for each section.
4
Add basic styling and set grid column and row sizes
In the CSS, add grid-template-columns: 10rem 1fr; and grid-template-rows: auto 1fr auto; to the .container. Also add a border of 1px solid black and padding of 1rem to each child element (header, aside, main, footer).
CSS
Hint
Set column widths and row heights on the container. Add border and padding to all four sections.
Practice
(1/5)
1. What does the grid-template-areas property do in CSS Grid?
easy
A. It names areas of the grid to place items easily.
B. It sets the colors of grid cells.
C. It defines the size of grid gaps.
D. It controls the font size inside grid items.
Solution
Step 1: Understand the purpose of grid-template-areas
This property lets you assign names to parts of the grid layout, making it easier to place items by referring to those names.
Step 2: Compare with other grid properties
Other properties like gap or font size do not name areas; they control spacing or style, so they are not correct here.
Final Answer:
It names areas of the grid to place items easily. -> Option A
Quick Check:
grid-template-areas = names grid parts [OK]
Hint: Remember: areas = named parts of grid layout [OK]
Common Mistakes:
Confusing grid-template-areas with grid-gap
Thinking it sets colors or fonts
Mixing it up with grid-template-columns
2. Which of the following is the correct syntax for defining grid-template-areas with two rows and three columns?
easy
A. grid-template-areas: ['header' 'header' 'header'] ['main' 'main' 'sidebar'];
B. grid-template-areas: header header header; main main sidebar;
C. grid-template-areas: "header header header" "main main sidebar";
D. grid-template-areas: ("header header header", "main main sidebar");
Solution
Step 1: Check the syntax format
The correct syntax uses quoted strings for each row, separated by spaces for columns, all inside the property value.
Step 2: Identify correct quotes and separators
grid-template-areas: "header header header" "main main sidebar"; uses double quotes around each row and spaces between area names, which is correct. Other options use incorrect brackets or missing quotes.
Final Answer:
grid-template-areas: "header header header" "main main sidebar"; -> Option C
Quick Check:
Quotes per row, spaces per column [OK]
Hint: Use quotes for each row, spaces for columns [OK]
Common Mistakes:
Omitting quotes around rows
Using brackets instead of quotes
Separating rows with commas or semicolons incorrectly
A. The nav, sidebar, and main all overlap in the first row.
B. The nav is only in the first column; sidebar and main share the second row equally.
C. The nav is in the last column; sidebar spans all columns in second row.
D. The nav spans all three columns in the first row; sidebar is left in second row; main spans two columns on right in second row.
Solution
Step 1: Analyze grid-template-areas rows
The first row is "nav nav nav", so nav covers all three columns in row one. The second row is "sidebar main main", so sidebar is in first column, main spans second and third columns.
Step 2: Match grid-area assignments
Each class uses grid-area matching the names in template areas, so items appear in those named spots.
Final Answer:
The nav spans all three columns in the first row; sidebar is left in second row; main spans two columns on right in second row. -> Option D
Quick Check:
Named areas match layout positions [OK]
Hint: Repeat area names in quotes to span columns [OK]
A. The grid-template-areas rows have different numbers of columns.
B. Missing grid-template-columns property.
C. The grid-area names do not match the template areas.
D. Using double quotes instead of single quotes.
Solution
Step 1: Count columns in each grid-template-areas row
The first row "header header header" has 3 area names (columns). The second row "content sidebar" has 2 area names. Mismatch!
Step 2: Verify the rule
All rows in grid-template-areas must have the same number of area names to define consistent columns.
Step 3: Check other options
B: grid-template-columns is implicitly created by areas. C: Names match exactly. D: Double quotes are valid.
Final Answer:
The grid-template-areas rows have different numbers of columns. -> Option A
Quick Check:
Same # areas per row [OK]
Hint: Every row must have identical number of area names [OK]
Common Mistakes:
Assuming rows have same columns without counting
Thinking missing grid-template-columns is the error
Believing quote type causes issues
5. You want a grid layout with three rows and three columns. The top row is a header spanning all columns. The middle row has a sidebar on the left and main content spanning the other two columns. The bottom row is a footer spanning all columns. Which grid-template-areas value correctly defines this layout?
hard
A. "header sidebar main" "header sidebar main" "footer footer footer"
B. "header header header" "sidebar main main" "footer footer footer"
C. "header header header" "main main sidebar" "footer footer footer"
D. "header header" "sidebar main main" "footer footer footer"
Solution
Step 1: Understand the layout requirements
Top row: header spans all 3 columns. Middle row: sidebar left (1 column), main content spans 2 columns on right. Bottom row: footer spans all 3 columns.
Step 2: Match the grid-template-areas string
"header header header" "sidebar main main" "footer footer footer" matches exactly: first row "header header header" (3 columns), second row "sidebar main main" (sidebar left, main spans 2 columns), third row "footer footer footer" (footer spans all columns).
Step 3: Check other options for errors
"header sidebar main" "header sidebar main" "footer footer footer" splits header and sidebar in first row, which is wrong. "header header header" "main main sidebar" "footer footer footer" swaps main and sidebar positions. "header header" "sidebar main main" "footer footer footer" has only 2 columns in first row, inconsistent with 3 columns.
Final Answer:
"header header header" "sidebar main main" "footer footer footer" -> Option B
Quick Check:
Repeat area names to span columns correctly [OK]
Hint: Repeat area names in quotes to span columns properly [OK]