- From: Giovanni Campagna <scampa.giovanni@gmail.com>
- Date: Thu, 19 Mar 2009 19:02:44 +0100
- To: www-style list <www-style@w3.org>
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) above. 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