Grid item placement helps you decide exactly where each box goes in a grid layout. It makes your page look neat and organized.
Grid item placement in CSS
Start learning this pattern below
Jump into concepts and practice - no test required
grid-column: start / end; grid-row: start / end;
start and end are grid line numbers or names.
You can use span to make an item cover multiple columns or rows.
grid-column: 1 / 3; grid-row: 2 / 4;
grid-column: 2 / span 2; grid-row: 1 / 2;
grid-column: 3; grid-row: 1 / 3;
This example creates a grid with 4 columns and 3 rows. Each colored box is placed using grid-column and grid-row to show how items can span multiple columns or rows. The boxes have keyboard focus for accessibility.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Grid Item Placement Example</title> <style> .grid-container { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 5rem); gap: 0.5rem; max-width: 400px; margin: 2rem auto; border: 2px solid #333; } .item { background-color: #4a90e2; color: white; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 1.2rem; border-radius: 0.5rem; } .item1 { grid-column: 1 / 3; grid-row: 1 / 2; } .item2 { grid-column: 3 / 5; grid-row: 1 / 3; } .item3 { grid-column: 1 / 2; grid-row: 2 / 4; } .item4 { grid-column: 2 / 4; grid-row: 3 / 4; } </style> </head> <body> <main> <section class="grid-container" aria-label="Example grid layout"> <div class="item item1" tabindex="0">Item 1</div> <div class="item item2" tabindex="0">Item 2</div> <div class="item item3" tabindex="0">Item 3</div> <div class="item item4" tabindex="0">Item 4</div> </section> </main> </body> </html>
You can use named grid lines for easier placement if you define them in grid-template-columns or grid-template-rows.
Use tabindex="0" on grid items to make them keyboard focusable for better accessibility.
Try resizing the browser to see how the grid adapts if you use flexible units like fr.
Grid item placement controls where each box sits in a grid.
Use grid-column and grid-row with start and end lines or spans.
This helps create neat, organized layouts that adapt well to different screen sizes.
Practice
grid-column: 2 / 4; do in a grid container?Solution
Step 1: Understand grid-column syntax
The syntaxgrid-column: start / end;means the item starts at the start line and ends before the end line.Step 2: Apply to given values
Here, start is 2 and end is 4, so the item covers columns 2 and 3 (lines 2 to 4).Final Answer:
It places the grid item starting at column line 2 and ending before column line 4. -> Option AQuick Check:
grid-column: 2 / 4 means columns 2 to 3 [OK]
- Thinking it includes the end line column
- Confusing span count with line numbers
- Assuming it skips columns between start and end
Solution
Step 1: Recall grid-row span syntax
The correct syntax to span rows isgrid-row: start / span number;.Step 2: Match with options
grid-row: 1 / span 3; uses1 / span 3, meaning start at line 1 and span 3 rows down.Final Answer:
grid-row: 1 / span 3; -> Option AQuick Check:
Start line then span count is correct [OK]
- Reversing start and span values
- Using dash instead of slash
- Placing span before start line
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 100px 100px;
.item {
grid-column: 3 / 5;
grid-row: 1 / 2;
}Solution
Step 1: Analyze grid-column placement
The item starts at column line 3 and ends before line 5, so it covers columns 3 and 4.Step 2: Analyze grid-row placement
The item starts at row line 1 and ends before line 2, so it is on the first row only.Final Answer:
The item spans columns 3 and 4 on the first row. -> Option CQuick Check:
grid-column: 3 / 5 and grid-row: 1 / 2 means columns 3-4, row 1 [OK]
- Confusing row numbers with column numbers
- Assuming end line is included
- Mixing up first and second row
.box {
grid-column: span 2 / 4;
grid-row: 1 / span 3;
}Solution
Step 1: Check grid-column syntax
The correct syntax isstart / endorstart / span count. Here,span 2 / 4is reversed; span should be second.Step 2: Check grid-row syntax
grid-row: 1 / span 3;is correct syntax to start at line 1 and span 3 rows.Final Answer:
The order of values in grid-column is incorrect; span should come second. -> Option DQuick Check:
Span always follows start line [OK]
- Placing span before start line
- Mixing up grid-column and grid-row syntax
- Assuming span can be first value
Solution
Step 1: Understand grid size and placement
The grid has 4 columns, so column lines go from 1 to 5 (one more than columns).Step 2: Check each option
- A:
grid-column: 2 / 6;tries to end at line 6, outside explicit grid (may create implicit tracks). - B:
grid-column: 2 / 4;ends at line 4, spans columns 2-3 only (2 columns). - C:
grid-column: 2 / span 3;starts at line 2, spans 3 columns to line 5, fits perfectly. - D:
grid-column: span 3 / 2;has incorrect syntax (span cannot precede start).
- A:
Final Answer:
grid-column: 2 / span 3; -> Option BQuick Check:
Start line then span within grid limits [OK]
- Using end line beyond grid size
- Reversing span and start line
- Assuming grid lines equal columns
