You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: spec/css3-box.txt
+8-5Lines changed: 8 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -156,14 +156,17 @@ From regions:
156
156
157
157
===Current thinking===
158
158
159
-
In CSS21, a flow root establishes a block formatting context (and everything which establishes a block formatting context is a flow root). This implies that if its flow consists entirely of inline-level boxes, an anonymous block box is induced which establishes the inline formatting context in which the inline-level boxes participate.
159
+
Formatting contexts are established by (possibly anonymous) boxes which may or may not be flow roots, whilst a flow root necessarily establishes a formatting context of some kind, depending on the box's properties.
160
160
161
-
For css3-box, a flow root establishes a formatting context of some kind, depending on the box's properties. Most commonly, a flow root establishes a block formatting context.
161
+
A flow root is roughly a box whose normal flow is rendered in a location that's out-of-sync with the normal flow content that surrounds its box in the box tree. I'm not yet clear whether its even necessary to care about the concept of flow root.
162
162
163
-
Aside from being established by flow roots, formatting contexts can also be induced anonymously: for example, an inline-level child box which would otherwise be a sibling of a block-level box in a block formatting context causes an anonymous block box to be created to contain that inline-level box and establish an inline formatting context for it; and a misparented table-cell induces box fixup resulting in the usual table wrapper formatting context and table formatting context.
164
-
165
-
Regions are flow roots. Column boxes are flow roots. Page boxes are flow roots. Currently in CSS, regions and page boxes necessarily establish //block// formatting contexts, and column boxes establish column formatting contexts which are currently identical in behaviour to block formatting contexts. All these boxes might perhaps establish other types of formatting context in future.
163
+
* Regions, floats, abspos boxes and transform boxes are flow roots.
164
+
* Neither column boxes, page boxes nor align boxes are inherently flow roots, but they do establish new formatting contexts.
165
+
* (The "align box" type exists merely to artifically establish a new block formatting context. Its name desperately needs changing.)
166
+
* Boxes whose used value of ‘overflow’ is not ‘visible’, table wrapper boxes, table cells, inline blocks and boxes whose directionality is orthogonal to their parent are //probably// not flow roots, but they do establish new formatting contexts.
167
+
* A ‘child-align’ box is neither a flow root nor inherently establishes a new formatting context.
166
168
169
+
Column boxes establish column formatting contexts which are currently identical in behaviour to block formatting contexts.
167
170
(In future, column formatting contexts might allow the overflow of a float from a previous column to affect the block formatting of the column in which the overflow sits. Perhaps 'clear' will react to that float overflow too.)
168
171
169
172
Recall that the scope of float behaviour and clearance behaviour is restricted to the block formatting context in which the float and clearing element participates.
0 commit comments