- From: MURAKAMI Shinyu <murakami@antenna.co.jp>
- Date: Sun, 04 Jan 2009 02:51:00 +0900
- To: www-style@w3.org
I have a question about CSS3 GCPM Page floats [1].
[1] http://dev.w3.org/csswg/css3-gcpm/#page-floats
| page
| This keyword indicates that the page box acts as containing block
| for the purpose of 'float'.
| multi-column
| This keyword indicates that the multi-column element acts as
| containing block for the purpose of 'float'.
| top
| This keyword indicates that the element is floated to the top of the
| containing block.
| bottom
| This keyword indicates that the element is floated to the bottom of
| the containing block.
My question:
What about the containing block for top/bottom floats when neither page
nor multi-column keyword is specified?
Example:
.multicol { column-count: 2 }
.top-float { float: top }
<div class="multicol">
...
<p>This is a paragraph.
<span class="top-float">TOP FLOAT
(specified in the paragraph)</span>
...
</p>
...
</div>
I expect the top-float is floated to the top of the current column.
But that is not obvious in the GCPM spec.
According to CSS2.1 Definition of "containing block" [2]:
[2] http://www.w3.org/TR/CSS21/visudet.html#containing-block-details
| if the element's position is 'relative' or 'static', the containing
| block is formed by the content edge of the nearest block-level,
| table cell or inline-block ancestor box.
If this CSS2.1 definition is applied to the top floats, the containing
block is the nearest block-level ancestor box, the paragraph p in this
example. The top-float is floated to the top of the paragraph, not the
column box. This is unexpected behavior.
I think that the GCPM spec should define the containing block for
top/bottom floats.
My proposal:
When the float property value has a vertical keyword (top, bottom) and
has no reference keyword (page, multi-column), the containing block is
formed by the content edge of the nearest box that is a column box or
is a "flow root" defined in the CSS3 basic box model [3] or page area.
In vertical text, a horizontal keyword is vice versa.
[3] http://www.w3.org/TR/css3-box/#flow-root
| A flow root is a box that satisfies at least one of the following:
| - The value of 'float' is not 'none'.
| - The used value of 'overflow' is not 'visible'.
| - The value of 'display' is 'table-cell', 'table-caption',
| 'inline-block' or 'inline-table'.
| - The value of 'position' is neither 'static' nor 'relative'.
| - The value of 'block-progression' is 'lr' or 'rl' and the value of
| 'block-progression' of its parent box is 'tb'
| - The value of 'block-progression' is 'tb' and the value of
| 'block-progression' of its parent box is 'lr' or 'rl'.
| Other modules may define additional flow roots.
Best regards,
--
Shinyu Murakami
http://www.antennahouse.com
http://www.antenna.co.jp/AHF/
Received on Saturday, 3 January 2009 17:51:54 UTC