Re: Floating objects

Allan Odgaard writes:

> OK, one more question: Had the floating object been the tallest, would the
> following element than have been closed without first 'flushing' any floats?
> E.g.
> 
>     ###################
>     #+--------+ Small #
>     #|Big box | box!  #
>     #|of much |########
>      |text    |
>      |floating|
>      |here... |
>      +--------+

Yes, this is correct.

> 
> If this is the case then which exceptions exist? I.e. I assume that table-cells
> should flush any floating objects, before the box is closed. And the same
> should probably also apply to other floating objects, and maybe absolute
> placed objects?

I don't think it has been specified explicitly anywhere, but
implementations indeed seem to treat tables that way. Seems reasonable
to me. Tables are already complicated enough. Same for a float inside
a float.

I don't think the same holds for absolute positioning. What exactly
would you "flush"?

> 
> 
> Another thing I've been considering is whether this markup:
>    <P>Hello <Div Style="float: left">Floating text...</Div>World!</P>
> Should be rendered as:
> 
>    Hello world!
>    +--------+
>    |Floating|
>    |text... |
>    +--------+
> 
> Or instead:
> 
>    Hello 
>    +--------+world!
>    |Floating|
>    |text... |
>    +--------+

Neither, in fact. It should be like this:

    +--------+Hello
    |Floating|world!
    |text... |
    +--------+

since the float fits without moving it down to the next line.

Many browsers still don't do this, probably because they
reverse-engineered Netscape when it first introduced floating images,
before CSS became a standard.

Oh, and btw: the mark-up is invalid :-) You cannot put a DIV inside a
P. But if you change it to a SPAN the example will work again.

> 
> I suspect it's the first way, but this gives a problem (in the implementation)
> if the text after the float changes the line-height.  I.e. when I see the
> floating object I'll place it below the current linebox of the containing
> object. But if more text is added to this linebox, it may grow in height, and 
> the position given to the floating object is wrong (it should be pushed down
> the same amount of space as the linebox gained)

Yes, I know the problem. Somehow you'll have to postpone the placement 
of the float.



Bert
-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/people/bos/                              W3C/INRIA
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 (0)4 92 38 76 92            06902 Sophia Antipolis Cedex, France

Received on Tuesday, 11 January 2000 14:25:16 UTC