Re: [CSS2.1-9.5] [CSS2.1-9.4.1] Block formatting context and Floats

Alan Gresley wrote:
> I would please like clarification on the specs for "9 Visual formatting model."
> ...
> 9.4.1 Block formatting contexts (part of 3rd paragraph):
> 
> #In a block formatting context, each box's left outer edge 
> #touches the left edge of the containing block. This is true 
> #even in the presence of floats, unless the box establishes a 
> #new block formatting context.
> 
> This has been changed to - 
> http://www.w3.org/TR/CSS21/changes.html#q54
> C.2.47 Section 9.4.1 Block formatting contexts
> 
> |In a block formatting context, each box's left outer edge 
> |touches the left edge of the containing block. This is true 
> |even in the presence of floats, except boxes that establishes 
> |a new block formatting context.

I can't figure out where you're quoting from.

> A few questions:
> 
> 1. Is the "box's left outer edge" the same as the boxes left margin edge if one is present?

Yes. See http://www.w3.org/TR/CSS21/box.html#box-dimensions

> 2. What is the difference between "unless the box establishes a new block formatting context"
> and "except boxes that establishes a new block formatting context?"

Nothing aside from the grammar.

> 3. Doesn't this reflect the old spec for "9.5 Floats" mentioning a margin box
> instead now the border box?
> 
> This seems to contradict part the reason of the change in the spec, though I'm
> not aware what the original Gecko bug was.
> http://lists.w3.org/Archives/Public/www-style/2007Apr/0040.html

I don't think there's a conflict.

> Could 9.5 Floats (5th paragraph) be re-worded:
> 
> |In a block formatting context, each box's left outer edge 
> |touches the left edge of the containing block. This is true 
> |even in the presence of floats. In the case of a box that 
> |establishes a new block formatting context, the box itself may 
> |become narrower due to the floats.
> 
> and tying in with the last part of "9.4.1 Block formatting contexts"
> 
> |If necessary, implementations should clear the said element 
> |by placing it below any preceding floats, but may place it 
> |adjacent to such floats if there is sufficient space.

The current 9.5 5th paragraph says:

  # The border box of a table, a block-level replaced element, or an
  # element in the normal flow that establishes a new block formatting
  # context (such as an element with 'overflow' other than 'visible')
  # must not overlap any floats in the same block formatting context as
  # the element itself. If necessary, implementations should clear the
  # said element by placing it below any preceding floats, but may place
  # it adjacent to such floats if there is sufficient space. They may
  # even make the border box of said element narrower than defined by
  # section 10.3.3. CSS2 does not define when a UA may put said element
  # next to the float or by how much said element may become narrower.

I can't see how we could possibly replace it with the text you give
and still keep the intended meaning.

~fantasai

Received on Tuesday, 15 January 2008 04:40:33 UTC