Re: [csswg-drafts] [css-display] Make 'flow-root' an independent keyword

Hmmm, okay.  So the problem we're dealing with, basically, is that we split the "flow" types into a 2x2 grid of {inline, block}x{flow, flow-root}, but there's a very natural division that groups {block flow, block flow-root, inline flow-root} together separately from {inline flow}, rather than the naive 2/2 splits the syntax creates. This 3/1 split happens to be at least somewhat reflected in the legacy blockification behavior, and possibly in our desired inlinification behavior, too.

Your suggestion is to instead use a 2x2x2 {inline-level, block-level}x{auto, block}x{flow-root, ∅} split, giving us 8 options, with several of them effectively identical.

I think we can make a slightly simpler 2x3 split that gives us the same necessary distinctions and natural blockification/inlinification behavior, with less duplication: {inline-level, block-level}x{inline, block, block-root}.  The mapping we obtain is thus:

inline => inline-level inline
block => block-level block
inline-block => inline-level block
block + BFC => block-level block-root

The two "leftover" combinations, `block-level inline` and `inline-level block-root`, are indistinguishable from `block` and `inline-block`, respectively, except for the blockification/inlinification behavior, where they preserve "looseness" or "FC-ness" respectively.

(I'm using `inline` as a display-inside because I really don't like using `auto` for something like this; it made me feel icky when I did it in an earlier draft, and I don't want to bring it back. It doesn't mean what `auto` traditionally means.)

This also avoids adding `flow-root` to the *other* display-inside values, where it's meaningless. Meaningless combinations are a grammar smell.

-- 
GitHub Notification of comment by tabatkins
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/1496#issuecomment-305911809 using your GitHub account

Received on Friday, 2 June 2017 21:19:37 UTC