Re: Splitting 'display'

It's probably good to explain why I did this.  There are two reasons.

First, as I stated in the actual text, our conflation of the inside
and outside values has gotten somewhat ridiculous.  At the very least,
any new display value has to be duplicated as a block and inline
version.  This doesn't cover all useful cases, though.  For example,
it's impossible to make a list-item act like a table, or a table-cell
to format its children as a flexbox.  Splitting them apart makes this
all work simply, like its supposed to.

Second, this makes it much easier to segregate appropriate features
into particular contexts.  The 'static' and 'text' values for
display-inside are the "traditional" layout modes in CSS, and are
meant for laying out a document, not a webpage or an application.
Some features, like float, only really make sense when used in a
document context.  Now, we can cleanly say that "float" only has an
effect when its parent has "static" or "text" display-inline.  Same
with multicol - we don't have to worry about trying to define that
multicol doesn't make any sense on a display:table element, for
example.  Multicol can say it, once, and be done with it.  Then,
future layout modes don't have to worry about protecting themselves
against unintended interactions.

This makes sensibly speccing flexbox easier, as I can define the
values as new display-inside values, and automatically get (a)
protection from weird consequences of things being specified that only
make sense in "static" and "text", or "table"/"table-inside", etc, and
(b) automatic combination of flexbox in all sensible types of boxes
(like list-item, table-cell, etc) without interfering with their role
in their parent's layout algorithm.

This'll help out Template Layout, too.

~TJ

Received on Friday, 16 April 2010 19:24:11 UTC