[CSS21] Table fix-up algorithm: elements vs boxes

The table repair algorithm in <> is phrased in terms of boxes, but the
intent (and implementations) seem to be to work over elements instead.
 Can someone clarify precisely what the intent is?

Specifically, take an example like this:

<!doctype html>
<style>
.table { display: table; }
.cell { display: table-cell; }
</style>
<div class=table>
 <div class=cell>foo</div>
 <span class=cell>bar</span>
 <span>foo
   <div class=cell>bar</div>
 baz</span>
</div>

The table has 5 child boxes (ignoring anonymous inlines containing
only whitespace), because the second <span> is split by its <div>
child.  If the table-repair algo works purely over boxes, there would
be five cells total here, as the first anonymous block generated by
the split <span> is wrapped into an anonymous cell, and so is the
second anonymous block.

But if the table-repair algo works over elements, you'd get three
cells, as the span is wrapped in a single cell before later being
split in half by its div child (when then generates its own anonymous
wrappers).

All implementations treat the table as having 3 cells.  They all do
something slightly different for the contents of the third cell, but
at least they agree on the treatment of the upper level.

I'll be making Flexbox match this behavior, so I'd like to use the
same language that is used here.

~TJ

Received on Monday, 7 February 2011 21:34:17 UTC