๐งฑ CSS COURSE โ MODULE 9: GRID
๐ File: grid.md
๐งฑ CSS Grid
๐ Introduction
CSS Grid is a 2D layout system used to design:
- rows
- columns
- full page layouts
๐ If Flexbox is for alignment, Grid is for entire page structure.
๐ง 1. Enable Grid
.container {
display: grid;
}
โ This activates grid system
๐ 2. Define Columns
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
Meaning:
- 3 equal columns
fr= fraction of available space
๐ 3. Define Rows
.container {
grid-template-rows: 100px 200px;
}
โ First row = 100px โ Second row = 200px
โก 4. Gap (Spacing)
.container {
gap: 10px;
}
โ Space between grid items
๐งฉ 5. Repeat Function (VERY USEFUL)
.container {
grid-template-columns: repeat(3, 1fr);
}
โ Cleaner way to create columns
๐ฆ 6. Auto Fit / Responsive Grid
.container {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
โ Makes responsive layouts automatically
๐ 7. Grid Item Positioning
.item {
grid-column: 1 / 3;
}
โ Spans item across columns
๐ 8. Grid Areas (ADVANCED)
.container {
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
.header {
grid-area: header;
}
โ Used for full page layouts
๐งฉ Real Example
<div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
.container {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.box {
background: blue;
color: white;
padding: 20px;
}
๐๏ธ Full Layout Example (REAL WEBSITE STYLE)
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 200px 1fr;
}
๐ง Grid vs Flexbox
| Feature | Flexbox | Grid |
|---|---|---|
| Dimension | 1D | 2D |
| Best for | alignment | layout |
| Control | items | full page |
โ ๏ธ Common Mistakes
- Using Grid for simple alignment โ
- Forgetting
display: gridโ - Not understanding
frโ - Mixing Grid + Flex incorrectly โ
๐ฏ Pro Tip
๐ Use:
- Flexbox โ navbar, buttons, alignment
- Grid โ page layout, dashboards
๐งช Mini Exercise
Create:
- A 3-column grid layout
- A responsive card grid
- A layout with header/sidebar/main/footer
- A grid using
auto-fit