-
Notifications
You must be signed in to change notification settings - Fork 756
Description
Based on implementation and usage experience at Vivliostyle, we have found that the current css-page-floats clear property has the following problems:
- Can not clear page floats when specified on block-level elements
- The value syntax is too complex for most use cases (i.e., just 'clear: all' is needed for clearing page floats in most scenario), and not sufficient for other cases (not possible to clear only 'column' floats or 'page' floats).
We'd like to propose to change the definition of the 'clear' property in css-page-floats as follows:
- Change "To prevent stacking of floats, ..." to "To ensure that the element is positioned after earlier floats, ..."
- Define only the following values at this level:
none | left | right | inline-start | inline-end | both | all - Treat 'left' and 'right' values as line-left and line-right and map to always 'inline-start' or 'inline-end'.
- 'clear: all' clears all floats including block-start and block-end floats.
Clearing works by shifting an element down until its block-start edge is lower than the block-end edge of any float preceding it in document order, or by pushing it to the next fragmentainer if there's not enough room to shift down. (this should be phrased carefully, in order to not prevent float stacking from working).
It is understood that this will remove some possibilities, such as preventing the presence of more than 1 top float at the top of a page, but we think this can be handled in a later version of the specification, either with additional values to the clear property, or maybe preferably via the float-defer property.