Last updated
Grid vs. Flexbox
- Use Grid for two-dimensional layouts (rows AND columns)
- Use Flexbox for one-dimensional layouts (row OR column)
- Grid is better for page-level layouts and complex component grids
- Flexbox is better for navigation bars, button groups, and simple alignment
- They work great together — Grid for the outer layout, Flexbox for inner components
The CSS Grid Generator on TechConverter.me provides a visual interface for defining grid tracks, placing items, and configuring alignment. Design your layout visually and copy the generated CSS directly into your stylesheet.
Examples
Example 1: Basic Grid Concepts
/* Simple 3-column grid */
.grid-3col {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* or repeat(3, 1fr) */
gap: 1.5rem;
}
/* Unequal columns */
.grid-sidebar {
display: grid;
grid-template-columns: 260px 1fr; /* fixed sidebar + flexible main */
gap: 2rem;
}
/* Three columns with different proportions */
.grid-proportional {
display: grid;
grid-template-columns: 1fr 2fr 1fr; /* 25% | 50% | 25% */
gap: 1rem;
}
Example 2: Named Grid Areas Layout
/* Classic page layout with named areas */
.page-layout {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"sidebar main main"
"footer footer footer";
grid-template-columns: 240px 1fr 1fr;
grid-template-rows: 64px 1fr 1fr 80px;
min-height: 100vh;
gap: 0;
}
.page-header { grid-area: header; }
.page-sidebar { grid-area: sidebar; }
.page-main { grid-area: main; }
.page-footer { grid-area: footer; }
/* Responsive: stack on mobile */
@media (max-width: 768px) {
.page-layout {
grid-template-areas:
"header"
"main"
"sidebar"
"footer";
grid-template-columns: 1fr;
grid-template-rows: auto;
}
}
Example 3: Responsive Card Grid (No Media Queries)
/* Auto-fill responsive grid */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1.5rem;
}
/* Creates as many 280px+ columns as will fit.
On a 1200px container: 4 columns (280px each)
On a 900px container: 3 columns
On a 600px container: 2 columns
On a 320px container: 1 column
No media queries needed! */
/* auto-fit vs auto-fill:
auto-fill: keeps empty tracks (columns don't stretch to fill)
auto-fit: collapses empty tracks (items stretch to fill row) */
.card-grid-stretch {
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}