Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[css-flexbox][css-grid] Unifying grid-auto-flow and flex-flow #11480

Open
fantasai opened this issue Jan 11, 2025 · 0 comments
Open

[css-flexbox][css-grid] Unifying grid-auto-flow and flex-flow #11480

fantasai opened this issue Jan 11, 2025 · 0 comments
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.

Comments

@fantasai
Copy link
Collaborator

fantasai commented Jan 11, 2025

The TAG response to the masonry syntax issue asked us to look into unifying controls for our layout modes, calling out grid-auto-flow and flex-flow (flex-direction + flex-wrap) in particular. Apple looked into this, and we have the following syntax proposal:

Introduce item-flow aliased to both flex-flow and grid-auto-flow and defined as a shorthand for the following properties:

  • item-direction (also aliased as flex-direction)

    • row | column | row-reverse | column-reverse
  • item-wrap (also aliased as flex-wrap)

    • auto | wrap | wrap-reverse | nowrap
    • auto computes to either wrap (for Grid) or nowrap (for Flexbox)
    • nowrap in Grid would mean autoplacement adds implicit tracks instead of wrapping to the next row
  • item-pack

  • item-slack

    • <length-percentage>
    • This is the masonry-slack property. See [css-grid] Decide on a name for masonry-slack #10884.
    • For Flexbox, slack could say at what point you switch from loose packing to cramming:
      • In normal mode, 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”.
      • In dense mode, 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 and grid-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:

  • We’re unsure if item-slack should be a longhand of item-flow or not: it's often nice to put it in the item-flow shorthand, but it might also make sense for it to cascade independently.
  • We’re open to ideas about the item- prefix. Ideas we’ve come up with so far include item-, box-, items-, and placement-. (We’re drawing the “item” terminology from the specs and from the align-items property.)

Thoughts?

@fantasai fantasai added 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. labels Jan 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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.
Projects
None yet
Development

No branches or pull requests

1 participant