[CSS21] Question on definition of containing block for abs pos elements

At the moment, the definition of containing block for an abs pos element has a 
subtlety that a lot of implementors seem to have missed... In particular, the 
definition says:

     1. In the case that the ancestor is block-level, the containing block is
        formed by the padding edge of the ancestor.
     2. In the case that the ancestor is inline-level, the containing block
        depends on the 'direction' property of the ancestor:
        1. If the 'direction' is 'ltr', the top and left of the containing block
           are the top and left content edges of the first box generated by the
           ancestor, and the bottom and right are the bottom and right content
           edges of the last box of the ancestor.

Note that a block-level positioned ancestor, the padding edge forms the 
containing block, while for an inline-level one it's the content edge.  From 
what I can tell, Opera 8.01 and IE/Win 6.0 both use the padding edge in both 
cases.  I'm told that so does Safari 2.0.  Gecko 1.7 definitely does.

Current Gecko 1.8 builds are following this part of the spec correctly, and 
we're getting bug reports because sites are assuming the buggy behavior all 
existing browsers have....

Given all that, would it make sense to change the specification to always use 
the padding edge?

I'd really appreciate a quick resolution to this if possible, since I'd hate to 
ship what the spec currently says in 1.8 and then have to revise it back to the 
old behavior in 1.9 if the spec changes at that point.

-Boris

Received on Friday, 15 July 2005 04:53:08 UTC