News for hackers. Stuff that matters.
Re:State of CSS by robin_reala on Friday October 21, 2022 @10:40AM (#33288460)
CSS Grid. It’s a mostly simple spec that allows for what you’re asking for and a whole bunch more (including different grids for different screen sizes, which tables definitely don’t do). Probably start with https://css-tricks.com/snippets/css/complete-guide-grid/
Re:State of CSS by Timja on Friday October 21, 2022 @10:49AM (#33288562)
Are you sure? Have you tried?

When I try, I don't get the nice behavior of tables, but a stiff layout that does not adapt to its content. Instead the content overflows the rows:

https://jsfiddle.net/3hfosn5k/

The nice thing about tables is that I know the table cells will always surround their content. Nothing will flow out of the cells.

Re:State of CSS by nicoburns on Friday October 21, 2022 @11:20AM (#33288935)
Grid tracks (rows and columns) can be content sized. You just have to set the dimensions to something other than a concrete size (you have used `33vh` here). See the auto, min-content, max-content and fit-content values for height/width (https://developer.mozilla.org/en-US/docs/Web/CSS/height). You can get close to table-like behaviour by setting the height to `fit-content(33vh)`. There is also a minmax function which allows you to set minimums and maximums and have it content size between that.

One of the nice things about grid is that you can size the tracks on the parent element, and all you have to do on the children is specify which rows/columns they span. It works much better when you want to do the sort of things you use rowspan and colspan for with tables.

EDIT: Setting height: 100% was also preventing the grid from expanding. Try this JSFiddle https://jsfiddle.net/c3m2194b/

Re:State of CSS by Frotag on Friday October 21, 2022 @02:16PM (#33291263)
> One of the nice things about grid is that you can size the tracks on the parent element

Yep, it's nice to have an alternative to flex (where children determine their own size with flex-grow / flex-shrink / flex-basis).

> Setting height: 100% was also preventing the grid from expanding. Try this JSFiddle https://jsfiddle.net/c3m2194b/

This is an issue I've run into a lot. Well the opposite, when I want overflowing grid cells to gain a scroll bar instead of expanding the parent. Turns out this is only doable if the grid element has an explicitly defined height, which means hard-coding a height like `height: 50vh` or ensuring every ancestor of the grid has `height: 100%` defined, which is pretty gross.

https://jsfiddle.net/36k1079x/

Re:State of CSS by nicoburns on Friday October 21, 2022 @03:33PM (#33292142)
Having `height: 100%` (or `flex: 1` or grid equivalent) on every ancestor is just what you have to do for CSS (it applies to all layout modes, not just grid). My way to make this less painful is generally to remove any extraneous divs and try to keep the trees as shallow as possible.
Re:State of CSS by speakeasyalexa on Friday October 21, 2022 @10:54AM (#33288629)
Hi friend, if you change the `height` values to `min-height` in that fiddle, I think you get the behavior you're looking for.