- From: Anton Prowse <prowse@moonhenge.net>
- Date: Sun, 27 Mar 2011 15:31:08 +0200
- To: "www-style@w3.org" <www-style@w3.org>
10.6.4 concerning the height of absolutely positioned elements says: # [...] the static position for 'top' is the distance from the top # edge of the containing block to the top margin edge of [...] But the vertical margin edges are not well-defined for elements whose margins participate in margin collapsing. This is most noticeable for self-collapsing elements, such as in the following test case in which there is no sensible relationship between the border box position of the "tricky" element (as determined by 8.3.1) and its 20px bottom margin: <div style="border-bottom:1px solid"></div> <div id="tricky" style="margin-bottom:20px"> <div style="margin-top:10px"></div> </div> <div style="border-top:1px solid"></div> For the most part this glitch doesn't cause us any problem since the spec avoids (albeit probably unconsciously) identifying individual margin pieces from amongst a collapsed margin lump. However, 10.6.4 relies on identifying the top margin edge of a box which may very well participate in margin collapsing. What should we do to fix this? Where should the absolutely positioned element be drawn in the following test case, and why? <div style="border-bottom:1px solid; margin-bottom:20px"></div> <div style="position:absolute; width:100px; height:100px; background: yellow; margin-top:10px"></div> <div style="border-top:1px solid; margin-top:20px"></div> There's no interop on this issue, but that's because Fx and IE don't perform tentative margin collapsing at all for abspos in order to determine their static position. (Indeed, UAs are free to make a guess at static position.) The spec isn't free to leave a concept ill-defined though! Op and Sf do perform tentative margin collapsing and they seem to use the formulation I give below to identify the top margin edge. My feeling is that we should explicitly define the top margin edge position. Happily, there's a natural way of doing this, since the general problem illustrated in the test case only affects bottom margin, never top margin. Specifically, when a box's top margin collapses with another margin thus contributing to a final margin lump, the distance between the box's top border position and the top of the margin lump is always at least as great as the box's top margin width. Hence it's possible and meaningful to define the top margin edge to be the distance above the top border edge given by the used value of 'margin-top'. Cheers, Anton Prowse http://dev.moonhenge.net
Received on Sunday, 27 March 2011 13:31:41 UTC