Intent to Ship: New multicol implementation
Contact emails
mste...@opera.com
Spec
http://www.w3.org/TR/css3-multicol/
Summary
Advance the RegionBasedColumns runtime flag from "experimental" to
"stable", and then delete the old implementation shortly after.
This will replace the current multicol implementation with the new one
(the new implementation is often referred to as "region-based
multicol", but that's probably a confusing name these days, as there's
no support for CSS regions in Blink at the moment). The new
implementation has an improved column balancing algorithm (the old
implementation tends to cause too tall columns), and it also works
better together with compositing. One new CSS property is also added:
column-fill. This property lets the author decide whether to balance
the columns or not. Implementation-wise it's also way less intrusive,
in that it doesn't require large chunks of code in LayoutBlock /
LayoutBlockFlow / DeprecatedPaintLayer, including the need for block
continuations, etc. So once the new implementation is shipping, we can
go ahead and delete the old code that bogs down such central parts of
Blink.
Note that the scope has shrunk since the original intent-to-implement
post: Support for nested-multicol will be dealt with later, and
treated as a simple bugfix. This also means that we cannot do printing
until this is fixed, since that depends on support for nested
fragmentation contexts. We can unprefix when all this is in. No
noteworthy improvements will be made to the various 'break' properties
either, such as introducing support for the more modern 'break-after',
'break-before' and 'break-inside' properties.
Link to “Intent to Implement” blink-dev discussion
https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/morten$20stenshorne$20intent$20to$20implement$20multicol/blink-dev/mNgHFWfe1HY/HSUf800BIAAJ
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes
Demo link
http://people.opera.com/mstensho/t/do-i-have-new-multicol.html
Debuggability
This feature only exposes straight-forward CSS properties as far as
DevTools is concerned.
Compatibility Risk
In the original intent-to-implement post, the plan was to unprefix the
multicol properties, and I raised compatibility concerns in that
regard. However, we shouldn't really unprefix before we have improved
the implementation further, most notably add support for nested
multicol, so that we can also paginate and print multicol. So there's
hardly any compatibility risk left, except that we now implement
column-fill, so that all multicol containers will be balanced unless
otherwise specified (with the old implementation we only balance if
height is auto). And there's always the risk of bugs or bug fixes, of
course.
OWP launch tracking bug?
https://code.google.com/p/chromium/issues/detail?id=334335
Link to entry on the feature dashboard
https://www.chromestatus.com/feature/6526151266664448
--
---- Morten Stenshorne, developer, Opera Software ASA ----
------------------
http://www.opera.com/ -----------------