Skip to content

[css-page-floats] clearance #1237

@frivoal

Description

@frivoal

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions