I mentioned this the other day via Michelle Barker’s coverage, but here I’ll link to the official announcement. The main thing is that we’ll be getting gap
with flexbox, which means:
.flex-parent {
display: flex;
gap: 1rem;
}
.flex-child {
flex: 1;
}
That’s excellent, as putting space in between flex items has been tough in the past. We have justify-content: space-between
, which is nice sometimes, but that doesn’t allow you to explicitly tell the flex container how much space you want. For that, we’d typically use margin
, but that means avoiding setting the margin on the first or last element depending on the direction of the margin — which is annoying gets complicated.
We have gap
in CSS Grid and it’s way better. It’s great to have it in flexbox.
But it’s going to get weird for a minute. Safari doesn’t support it yet (nor stable Chrome) so we can’t just plop it out there and expect it to work with flexbox. But shouldn’t we be able to do an @supports
query these days?
/* Nope, sorry. This "works" but it doesn't
actually tell you if it works in *flexbox* or not.
This works in grid in most browsers now, so it will pass. */
@supports (gap: 1rem) {
.flex-parent {
gap: 1rem;
}
}
That got weird because grid-gap
was dropped in favor of just gap
. I’m sure grid-gap
will be supported forever because that’s generally how these things go, but we’re encouraged to use gap
instead. So, you might say gap is a little overloaded, but that should shake out over time (a year?). It’s complicated a smidge more by the fact that column-gap
is now going to gap
as well. gap
has a whole bunch of jobs.
I’d say I’m still in favor of the change, despite the overloading. Simpler mental modals are important for the long-term, and there isn’t exactly anything coming up to challenge CSS for styling in the browser. I’d bet my 2-year old daughter writes some CSS in her lifetime.