CSS Grid just shipped in Chrome, Firefox, and Safari within weeks of each other. After years of spec work and browser implementation, we finally have a proper layout system for the web. No more floats-as-layout. No more clearfix hacks. No more flexbox contortions.
This should be a huge moment. But here's the uncomfortable truth: most developers won't use Grid for months or years, because unlearning decades of CSS hacks is harder than learning Grid itself.
What Grid Actually Does
CSS Grid lets you define two-dimensional layouts—rows and columns—explicitly. Place items in specific grid cells, span multiple cells, create gaps, and it just works.
.container {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
gap: 20px;
height: 100vh;
}
.header {
grid-column: 1 / -1; /* span all columns */
}
.sidebar {
grid-column: 1;
grid-row: 2;
}
.main {
grid-column: 2;
grid-row: 2;
}
This is what we should have had in 1998. Instead, we've spent 20 years stacking hacks on hacks because CSS wasn't designed for application layouts.
The Hacky Legacy
Let's review what we've been doing:
- Tables (late 90s): Wrong semantically, but worked
- Floats (2000s): Never designed for layout, required clearfix
- Positioning (2000s): Breaks document flow, hard to maintain
- Flexbox (2010s): One-dimensional, requires nesting for complex layouts
- Frameworks (Bootstrap, Foundation): Grid systems via floats/flexbox
Every approach was a workaround. We built entire mental models around limitations that shouldn't exist.
Grid vs Flexbox
The question everyone asks: "Should I use Grid or Flexbox?"
The answer: both. They're complementary, not competitive.
Flexbox is for one-dimensional layouts—rows or columns. Use it for:
- Navigation bars
- Lists of items
- Centering elements
- Distributing space along one axis
Grid is for two-dimensional layouts—rows and columns together. Use it for:
- Page layouts
- Card grids
- Dashboard panels
- Complex responsive designs
In practice, you'll use Grid for the overall page structure and Flexbox for components within Grid cells. They work together.
The Browser Support Question
Grid shipped in Chrome 57, Firefox 52, and Safari 10.1—all in March 2017. Edge has partial support (old spec implementation). IE11 has the old spec with -ms- prefixes.
So can you use it in production? Depends on your users:
- Modern browsers: yes, absolutely
- IE11/Edge: requires fallbacks or waiting
The typical approach: use @supports for progressive enhancement.
.container {
/* Flexbox fallback */
display: flex;
flex-wrap: wrap;
}
@supports (display: grid) {
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
}
This works, but requires maintaining two layout systems. That's a hard sell to teams already drowning in CSS complexity.
The Adoption Challenge
Here's the real barrier: CSS Grid requires unlearning.
If you've been doing CSS for a decade, you have deeply ingrained patterns:
- Float clearing reflexes
- Flexbox nesting habits
- Framework grid system muscle memory
Grid makes all of that obsolete, but your brain still reaches for the old patterns. The learning curve isn't steep—Grid is actually simpler than the hacks. The problem is unlearning years of workarounds.
I've watched experienced developers try Grid, struggle because they're thinking in floats/flexbox, and give up saying "it's too complicated." It's not complicated. They're just fighting their own habits.
What Changes Now
For new projects starting today: there's no excuse not to use Grid. The browser support is there (with fallbacks if needed), and it solves problems that have plagued CSS for decades.
For existing projects: the migration cost is real. You're not rewriting all your CSS overnight. But for new features, new pages, or major redesigns—use Grid.
For CSS frameworks: they'll eventually embrace Grid, but not immediately. Bootstrap 4 doesn't use it. Expect framework adoption in the next year or two.
The Bigger Picture
CSS Grid represents a maturation of the web platform. For years, we've been bolting layout capabilities onto a language designed for documents, not applications. Grid is the first layout system actually designed for modern web UI.
This is similar to Flexbox, but bigger. Flexbox solved one-dimensional layout. Grid solves two-dimensional layout. Together, they make CSS viable for complex interfaces without frameworks or hacks.
The question is how long adoption takes. New developers learning CSS today should start with Grid and Flexbox—skip the hacks entirely. Experienced developers need to invest time unlearning old patterns.
Practical Recommendations
If you're starting a new project:
- Use Grid for page layouts
- Use Flexbox for component internals
- Provide Flexbox fallbacks for older browsers if needed
- Don't use float or positioning for layout anymore
If you're maintaining existing projects:
- Learn Grid in side projects first
- Use it for new features
- Don't rewrite everything—refactor incrementally
- Document Grid usage for your team
The technical capability is here. Now it's about changing habits.
For learning resources, see CSS Tricks Grid Guide and Grid by Example.