← Back to context

Comment by code_biologist

4 days ago

There's plenty of overlap, but they solve different problems: flexbox when the content should control element sizing/fit, grid when the container should control element sizing/fit.

Another way to think about it: flexbox is for alignment of boxes in one dimension: horizontally or vertically.

CSS Grid is for two dimensional layout of rows and columns.

Back in the day, developers wanted page layout instead of the hacks on top of hacks with table-based layouts, floats and positioning to create layouts.

We’ve had CSS Grid designed for page layout on the web, in all browsers since 2017; as of 2022, only 12% of the top 1 million websites used CSS Grid, which to me is ridiculously low.

  • I use flexbox for grid purposes, simply because the syntax is straightforward and easy to read. Yeah, it’s one dimension, but if you nest it, it becomes two with no issues.

    • With nested flexbox the nested dimensions are not aligned to each other. With grid the items are aligned across both each row AND each column. With subgrid even nested grids can be aligned across nesting levels.

      1 reply →

  • I think the grid syntax is really off-putting - it’s one of the few places of “typical” CSS I tend to avoid unless something really calls for it. In my experience, it feels like the people most familiar with grid display, the syntax, and using it, are more on the design side than the programming side - most of my frontend peers who use it tend to misuse it when flex would work fine and be less rigid for their goals

But flex grow and align stretch exist, which moves control back to the parent...

A grid really feels like a list flexes to me too, functionally.