- From: Jonny Axelsson <jax@opera.com>
- Date: Wed, 07 Nov 2007 10:17:49 +0100
- To: "www-style@w3.org" <www-style@w3.org>, "w3c-css-wg@w3.org" <w3c-css-wg@w3.org>
> David Baron
> (And, frankly, I'd rather see what your proposal solves addressed
> by a flexible box model.)
A very common request is to visually center one block within a containing
block vertically or horizontally, and I expect that by the time CSS3 is
done it should handle both cases more or less intuitively.
I would wish that whatever mechanism is chosen should handle the case of
two or more contained blocks as well, or at least not preclude support for
it in a future version of CSS. This is very common in presentations and
not uncommon in other layouts.
If you have:
<container>
<item id="A"/>
<item id="B"/>
<item id="C"/>
</container>
it should be possible to have a generalisation of margin: auto that will
split the margin between the items with predefined dimensions and
constrain the dimensions of the containing block to calculate the items
without.
A novice designer would do something like this and not unreasonably expect
it to work, and be frustrated when it sometimes work (for the horizontal
case) and never works (for the vertical case):
<table height="100%" width="100%" id="horizontal">
<tr>
<td><item id="A"/></td>
<td><item id="B"/></td>
<td><item id="C"/></td>
</tr>
</table>
<table height="100%" width="100%" id="vertical">
<tr><td><item id="A"/></td></tr>
<tr><td><item id="A"/></td></tr>
<tr><td><item id="A"/></td></tr>
</table>
A more sofisticated designer knows that CSS Cures Cancer, remove the
superfluous layout elements 'table', 'tr', and 'td' elements, so to just
write
container {display: table}
container item {display: table-row} /* for the horizontal case, or */
container item {display: table-column} /* for the vertical case */
and be even more frustrated.
--
Jonny Axelsson, Core Technology, Opera Software AS
Received on Wednesday, 7 November 2007 09:15:10 UTC