Re: [css-page-floats] comments on Page Floats

MURAKAMI-san wrote:

 > > However, if there isn't enough space in the current page/column, the
 > > float must be moved to the next page/column anyway. So, I don't
 > > understand what effect the value has.
 > 
 > The 'auto-next' is the default behavior of AH pages floats,
 > and I thought that 'float-defer-column: none' would be the same.
 > 
 > http://antennahouse.com/CSSInfo/float-extension.html#axf.float-move
 >   Initial: auto
 >   auto: Same as keep if float-y is none, same as auto-next otherwise.
 > 
 > 'float-y is none' means this float is not a page float.

I see. It's a float, but not a page float.

 > > It seems similar to the 'unless-room' value found here:
 > > 
 > >   http://www.w3.org/TR/css3-gcpm/#float-modifiers
 > > 
 > > However, the effect of 'unless-room' is that it turns on floating; if
 > > there is enough room, the element will not be floated. But 'auto-next'
 > > only applies to floats, so it it is not the same as 'unless-room'.
 > 
 > However 'auto-next' can apply to non-page floats.
 > 
 > .figure {
 >   -ah-float: left auto-next;
 > }
 > 
 > This float is almost same as normal 'float: left', 
 > but when there is no sufficient space in the current
 > page/column and a page/column break occurs at before the 
 > float, the blank space remains with normal 'float: left'
 > (the text following the float moves to the next page 
 > together with the float) and no such blank space remains 
 > with 'auto-next'.

Understood.

 > This effect is similar to the 'float: snap(0)',
 > although 'auto-next' cannot change non-float to a float
 > and cannot change non-page float to a page-float.

So, in your example, .figure remains a float, but is not considered a
page float, even if it appears at the top of the column? I'd probably
consider it a page float at that stage, but that's more a question of
terminology than functionality.

 > One question:
 > 
 > <div style="margin-left: 3cm; margin-right: 3cm">
 >   ...
 >   <figure style="float: snap(0); width: 100%;">
 >     ...
 >   </figure>
 > </div>
 > 
 > If snap(0) makes itself a page float conditionally,
 > the width of the figure also will be changed?
 > (When this figure is a page float, the 100% width is
 > the column/page width and the margin-left/right
 > of the div does not affect the width of the page float.)

Let's see. If the figure is in a multicol element, 100% refers to the
column width -- this is the case both for page floats and other
elements, so there should be no change.

If the figure had been turned into a page float with the page as a
reference, the width would change. In the current ED syntax, one can
epress that the page is the reference with:

   .figure { column-span: page }

However, when using 'column-span', one should expect the width to
change. So, I'm fairly happy about using 'column-span' for this.

The question then becomes, is it possible for snap() to change the
referece from column to page? For example, what does this mean?:

  .figure { float: snap(0); width: 100%; column-span: page }

We could define it to mean: if there's room, the element should remain
in the normal flow. If the element would cause a column/page break, it
is turned into a page float and 'column-span: page' then has effect --
the element escapes its <div> parent and uses the wider page as a
reference.

Does this make sense?

(In Opera's implementation, page floats only work in multicol elements.
So, our implementation of 'snap()' will never lead to changes in
width.)

-h&kon
              Håkon Wium Lie                          CTO °þe®ª
howcome@opera.com                  http://people.opera.com/howcome

Received on Monday, 16 September 2013 22:04:44 UTC