- From: Gérard Talbot <www-style@gtalbot.org>
- Date: Sat, 19 Jul 2014 13:41:17 -0400
- To: Boris Zbarsky <bzbarsky@mit.edu>
- Cc: Alan Gresley <alan@css-class.com>, Pavel Curtis <pavelc@microsoft.com>, Greg Whitworth <gwhit@microsoft.com>, W3C www-style mailing list <www-style@w3.org>
Le 2014-07-15 15:12, Boris Zbarsky a écrit :
> On 7/14/14, 7:18 PM, Greg Whitworth wrote:
>> We have found an interop issue on how an inline-relative’s offset
>> should
>> affect a fixed/absolute element.
>
> To be clear, this is about the case when the absolute/fixed element
> has auto offsets so what matter is the "static position" of CSS 2.1
> section 10.3.7, right?
>
>> Absolute Example: http://jsfiddle.net/eUV76/1/embedded/result/
>
> Let's focus on this one, since I agree that absolute and fixed
> position should be treated identically here.
>
> In particular, let's focus on the "relative with offset:" case.
>
> For the case it's interesting to look at what actually happens if the
> positions are set to static: http://fiddle.jshell.net/eUV76/4/show/
>
> I agree that it looks odd that Firefox is not vertically moving the
> green bit and not moving the blue bit at all. That said, the vertical
> position of the green bit looks odd to me in IE as well, given where
> the static position is.
>
> The spec, of course says:
>
> But rather than actually calculating the dimensions of that
> hypothetical box, user agents are free to make a guess at its
> probable position.
>
> -Boris
"
But rather than actually calculating the dimensions of that hypothetical
box, user agents are free to make a guess at its probable position.
"
stated in both
§10.6.4 Absolutely positioned, non-replaced elements
http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
and
§10.3.7 Absolutely positioned, non-replaced elements
http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
There were reasons why the CSS2.1 spec was originally written with such
latitude, leniency; if you change the spec now, then you have to
consider those reasons (assuming they are still valid). One reason I see
is margin collapsing: it is active when blocks are statically
positioned, it is not active when blocks are positioned. I remember at
least 1 test which was labelled as incorrect because of this:
http://test.csswg.org/suites/css2.1/nightly-unstable/html4/margin-collapse-012.htm
Email discussion:
http://lists.w3.org/Archives/Public/public-css-testsuite/2012Sep/0012.html
Shepherd file:
http://test.csswg.org/shepherd/testcase/margin-collapse-012/
------------
{
For the purposes of this section and the next, the term "static
position" (of an element) refers, roughly, to the position an element
would have had in the normal flow. More precisely, the static position
for 'top' is the distance from the top edge of the containing block to
the top margin edge of a hypothetical box that would have been the first
box of the element if its specified 'position' value had been 'static'
and its specified 'float' had been 'none' and its specified 'clear' had
been 'none'.
}
§10.6.4 Absolutely positioned, non-replaced elements
http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
The term "top edge of the containing block" is different (meaning that
"top edge of containing block" refers to something different) if the
parent is an inline instead of a block. (Am I wrong here with such
understanding?)
"
The containing block of an element is defined as follows:
(...)
If the element has 'position: absolute', the containing block is
established by the nearest ancestor with a 'position' of 'absolute',
'relative' or 'fixed', in the following way:
In the case that the ancestor is an inline element, the
containing block is the bounding box around the padding boxes of the
first and the last inline boxes generated for that element. In CSS 2.1,
if the inline element is split across multiple lines, the containing
block is undefined.
"
§10.1 Definition of "containing block"
http://www.w3.org/TR/CSS21/visudet.html#containing-block-details
Gérard
Received on Saturday, 19 July 2014 17:41:57 UTC