Re: layout idea

Personally, I think that what we are proposing is a bit inconsistent,
difficult to understand for authors, problematic for implementation
and colliding with other proposals.
The main goals for these proposals are:

1) A tabular layout, ie a layout where the canvas is divided into rows
and columns, with same or variable height and width.
2) An auto box creation method, to avoid writing semantic-less
block-level elements (our beloved <div>s)
3) A content reordering method, to have content rendereded differently
from DOM order

First of all, I don't think we should extend CSS3 Table Layout outside
things really needed by a table: although they display:table can be
used for stylistics purposes, its main goal is a table in a more
specific sense. This means that it can divide rows in groups for
printing, can collapse borders, can display a caption, and other
quirks and heuristics for tabular data.
They only additions I would support to this model are "row-span" and
"col-span", that should apply only to display:table-cell elements and
pseudo-elements and should be handled as specified in CSS21 17.5,
point 5.

Secondly, this does not mean we cannot use it, as long as the
appropriate boxes are generated. This is the problem of point 2)
A simple idea for this is:
display-model: matrix-layout(2,2)
The result is an explicit block-level element (the template ancestor),
containing table-captions elements (if any), then a table element,
with one table-row-group, in turn with two table-row, each one with a
table-cell, all of them anonymous.
The ::slot(<x>,<y>) pseudoelements matches the xth anonymous
table-cell inside the yth anonymous table row. This means that it does
not necessarily matches the cell at position (x,y). Laying out those
boxes is handled at a different level.
The initial value for display-role in ::slot(<x>,<y>) is table-cell.
The computed value is table-cell if its superior parent has a
display-model of matrix-layout and <x>,<y> are both lower or equal
than the matrix sizes, else it is none.
The element's box is then followed by an anonymous block box
containing all child content in th

Now we have an anonymous table. What we need next is putting some
content inside it. The solution here is called "named flows".
Every ::slot(<x>,<y>) has an initial value for content: that is
pending(<slot-name>); (or float:from(<slot-name>). <slot-name> is an
identified with syntax slot-<x>-<y>.
Then if you want to push contents inside a specific slot, you just need to set
move-to: slot-<x>-<y>
(or position-flow: slot-<x>-<y> or float:to(slot-<x>-<y>) )
Notice that I used an identifier instead of a functional notation
because named flows belong to a different module and

Received on Thursday, 19 March 2009 18:03:19 UTC