News for hackers. Stuff that matters.
Re:Full-Bleed Layout Using CSS Grid by Aeolun on Tuesday October 06, 2020 @07:11AM (#24696521)
You can use the same trick in a flexbox container?

Set every * to max-width: 65ch and then have the same full-bleed class to go to width: 100%.

I agree with OP that using grid for this is a bit misplaced. But realistically, it probably won’t be a problem.

Re:Full-Bleed Layout Using CSS Grid by joshwcomeau on Tuesday October 06, 2020 @08:08AM (#24696832)
This doesn't work because `65ch` means very different things depending on the font-size. You need to apply it to a parent class, so that it picks the base font size (I'm not actually sure how this works but in practice it seems to base it on the child <p> tag).

I also don't like the idea of "reaching in" and setting widths on all children. Feels like this could cause problems, especially on replaced elements like images/videos. Not to mention that it just feels wrong when combined with a component architecture, where I might expect a <Heading> component to control its own destiny. In fairness, my solution also reaches in to apply a grid-column, but grid-column is a property that only makes sense when combined with a parent's `display: grid`. So it bothers me less.

Enough people have brought this up that I wonder if I should have addressed it in the article... but then I realize, it's not my job to argue against or "disprove" all alternative ideas. I'm not claiming that my way is the best way, I'm just sharing a cool trick I found :)

Re:Full-Bleed Layout Using CSS Grid by knathan on Tuesday October 06, 2020 @10:06AM (#24697755)
There really aren't any scenarios I can think of that an element would need to have `grid-column` set without being wrapped in another grid, so for that reason it is generally safer to set `grid-column` on all children than it is to set `max-width`. I would be surprised if I added an element only to discover that its width was being modified by a wildcard rule, less so with `grid-column` because grid placement is arguably the concern of the grid.

As a side note, I like this technique and have already had a good opportunity to apply it instead of the old padding & negative margins method or even flexbox + stretch (and I like flexbox), neither of which actually worked for this very specific case.

Re:Full-Bleed Layout Using CSS Grid by Aeolun on Wednesday October 07, 2020 @06:33AM (#24706888)
> I'm not claiming that my way is the best way, I'm just sharing a cool trick I found :)

I agree. It’s not that I really think one way is better or worse.

I like flexbox more, but since you’re not working in my codebase, you can do whatever you want ;)

Re:Full-Bleed Layout Using CSS Grid by detaro on Tuesday October 06, 2020 @08:09AM (#24696836)
Doesn't that run in the "ch depends on font and font-size" problem e.g. with headings vs paragraphs again if you don't use wrappers?
Re:Full-Bleed Layout Using CSS Grid by Aeolun on Wednesday October 07, 2020 @06:34AM (#24706896)
Hmm, that’s definitely possible, but then I think we probably shouln’t be using that magic unit to begin with.
Re:Full-Bleed Layout Using CSS Grid by detaro on Wednesday October 07, 2020 @07:10AM (#24707068)
Why? It specifically exists to make things dependent on the font, and sizing text columns based on the size of the body text, and have other elements follow that, also makes sense.
Re:Full-Bleed Layout Using CSS Grid by Aeolun on Thursday October 08, 2020 @08:45AM (#24718602)
Yes, but with it being dependent on the current font size, its a tad hard to use effectively.

You can make the container have a sensible weight to keep all elements within it, but you cannot have the children contain their own destiny in a consistent manner.