[css-display] More precise box transformations · Issue #1643 · w3c/csswg-drafts (original) (raw)
CSS Display has some handwaving about display types belonging to elements or boxes. Mostly it's clear what it means, but I think that Box Type Transformations should be more precise, and differentiate between elements, element-generated boxes, anonymous boxes, and text runs.
I think it should say something like this:
- Definition: blockifying a principal box blockifies the generating element.
- Definition: inlinifying a principal box inlinifies the generating element.
- Definition: blockifying or inlinifying a text run does nothing.
- Definition: blockifying an element sets its outer display type to
block
and, if its inner display type is layout-internal, it is set toflow
. - Definition: inlinifying an element sets its outer display type to
inline
unless it was layout-internal. If the inner display type isflow
, the box recursively inlinifies its in-flow children. - Note: blockifiying or inlinifying an element without display types has no effect.
- Note: blockifiying or inlinifying an element affects the computed value of
display
. - Note: blockifications and inlinifications happen before the creation of anonymous boxes to fix the box tree.
- Assert: CSS specifications MUST prevent text runs from remaining as direct children of a parent box which blockifies its contents, e.g. by wrapping the text runs inside appropriate anonymous boxes.
- Assert: CSS specifications MUST prevent anonymous inline-level boxes from being generated as direct direct children of a parent box which has blockified its contents, e.g. by generating anonymous block-level boxes instead.
- Assert: CSS specifications MUST prevent anonymous block-level boxes from being generated as direct direct children of a parent box which has inlinified its contents, e.g. by generating anonymous inline-level boxes instead.
- Assert: CSS specifications MUST prevent text runs, boxes and elements from being simultaneously blockified and inlinified.
- Assert: CSS specifications MUST prevent non-principal element-generated boxes from being blockified or inlinified.