- From: Anton Prowse <prowse@moonhenge.net>
- Date: Sun, 25 May 2008 21:18:20 +0200
- To: www-style@w3.org
I perceive a need for in-flow block-level flow roots ("block formatting
contexts") which have neutral behaviour.
Motivating example:
-----------------------
|--------- ---------- |
||floated| |prod1 | |
|| ad | | | |
|| | ---------- |
|| | ---------- |
|--------- |prod2 | |
| | | |
| ---------- |
|-------------------- |
||prod3 | |
|| | |
|-------------------- |
-----------------------
The floated advertisement would have a fixed (perhaps unknown
shrink-to-fit) width, while the in-flow product descriptions should
expand-to-fill their containing block.
I have frequently seen this kind of layout implemented by making the
product descriptions generate flow roots, and the author usually seems
to desire two things: that the appearance achieved be akin to an
alternative float model in which floats push in-flow boxes to one side
(rather than just line boxes of in-flow boxes); and that the product
descriptions' descendant clears be confined, essential if they contain
complex markup.
The desire for a layout with such properties seems reasonable. As CSS
currently stands, however, there is no suitable flow root--generating
property to apply to the product description boxes:
* position other than static or relative: useless;
* table-cells: complicated behaviour, no expand-to-fill behaviour;
* table-captions: completely inappropriate;
* overflow other than visible: plausible;
* inline-blocks: do not have expand-to-fill behaviour, and belong to an
inline formatting context rather than a block formatting context.
This layout has been achieved using overflow other than visible in most
situations that I recall. (Using this seems to me to be a lesser crime
than abusing overflow to contain floats, which can be achieved via the
"easy clearing" method[1] with no need for a flow root sledgehammer.)
However, there are two obvious drawbacks: overflow is, well, other
than visible; and margin collapsing is suppressed.
The lack of expand-to-fill behaviour for inline-blocks can be countered
using "box-sizing:border-box; width:100%", making them another plausible
candidate, but unfortunately margin collapsing is still suppressed,[2]
and having them belong to an inline formatting context is not ideal.
Hence, a way of achieving an in-flow block-level neutral flow root would
be an interesting addition to the layout arsenal.
Anton Prowse
http://dev.moonhenge.net
[1] http://www.positioniseverything.net/easyclearing.html
[2] apparently in order to mimic WinIE behaviour which was used as a
guide for how inline-block should work
(http://lists.w3.org/Archives/Public/www-style/2005Jan/0104.html)
Received on Sunday, 25 May 2008 19:18:47 UTC