[css-flexbox][css-grid] Unifying grid-auto-flow and flex-flow #11480
Labels
css-flexbox-2
css-grid-3
Masonry Layout
tag-tracker
Group bringing to attention of the TAG, or tracked by the TAG but not needing response.
The TAG response to the masonry syntax issue asked us to look into unifying controls for our layout modes, calling out
grid-auto-flow
andflex-flow
(flex-direction
+flex-wrap
) in particular. Apple looked into this, and we have the following syntax proposal:Introduce
item-flow
aliased to bothflex-flow
andgrid-auto-flow
and defined as a shorthand for the following properties:item-direction
(also aliased asflex-direction
)row | column | row-reverse | column-reverse
item-wrap
(also aliased asflex-wrap
)auto | wrap | wrap-reverse | nowrap
auto
computes to eitherwrap
(for Grid) ornowrap
(for Flexbox)nowrap
in Grid would mean autoplacement adds implicit tracks instead of wrapping to the next rowitem-pack
normal | dense
dense
packing for Flexbox would mean that instead of breaking lines as soon as an item can’t fit, we try to cram in one more, triggeringflex-shrink
behavior instead offlex-grow
on that line. See [css-flexbox-2] Add flex-wrap: dense #3071.item-pack: normal | dense || [ collapse | balance ]
could allow:collapse
triggering a masonry-style layout for Grid (see [css-grid-3][masonry] Masonry Syntax Debate #11243).balance
opting into balanced line-wrapping for Flexbox ([css-flexbox-2] Add flex-wrap: balance; #3070).item-slack
<length-percentage>
masonry-slack
property. See [css-grid] Decide on a name formasonry-slack
#10884.10px
slack would mean “if there’s only 10px overflow on this line when adding the next item, cram it in anyway, as squeezing in an extra 10px is no big deal”.10px
slack would mean “if there’s only 10px empty space left on this line, don’t try to cram in the next item, that’s too much cramming”.Caveats: This would make
flex-flow
andgrid-auto-flow
cascade as a single property, which is a change in behavior and therefore could have some Web-compat impact.Variations: This is our initial sketch, but there are some variations we’ve considered:
item-slack
should be a longhand ofitem-flow
or not: it's often nice to put it in theitem-flow
shorthand, but it might also make sense for it to cascade independently.item-
prefix. Ideas we’ve come up with so far includeitem-
,box-
,items-
, andplacement-
. (We’re drawing the “item” terminology from the specs and from thealign-items
property.)Thoughts?
The text was updated successfully, but these errors were encountered: