Interpretation of section 10.6.5 and 9.7 (absolute positioning)

Consider the following HTML and style sheet:

<body id="body">
   <div id="div1">
     <p id="p1">
       <img id="img1">
       <img id="img2" style="position:absolute; right:0.6em">
       <span id="em1">text</span>
     </p>
   </div>
</body>

Both images have a height of 100px and both their width is less than half 
of the screen / C.B. of HTML.


Following section 10.1 the C.B. of img2 is established by the nearest 
parent with position other then 'static'. Or when no parent could be found 
the initial C.B. This gives the following table:

For box generated by C.B. is established by
-------------------------------------------
body                      initial C.B.
div1                      body
p1                        div1
img1                      p1
img2                      initial C.B.
em1                       p1

Following section 9.7 the position : absolute forces display : block and 
therefore following section 9.4.1 and 9.6 it has no impact on later 
siblings, do not flow and therefore may obscure other elements like em1.

To determine it rendering position within the initial C.B. (say 0,0 -> 
780,540) and the image is 150x100 pixels and 0.6em equals 12 pixels for the 
current font, the tops of p1, div1, and img1 are at 0.

We follow section 10.3.8 (and 10.3.7) for the horizontal position
1. Width is auto so width becomes 150px
2. left is set to something below 780-150-12 pixels.
3. Nothing done
4. Nothing done
5. Margin-left = margin-right = i.e. 0px
6. Nothing done
7. over-constrained:
     left = _initCBright_ - width - right - margins - padding
     left = 780 - 150 - 12 - (0 + 0) - (0 + 0) = 618

So the image is painted between pixel 618 and 768 on the screen

We follow section 10.6.5 (and 10.6.4) for the horizontal position
1. height is set to 100px
2. pronlem here on what the hypothetical box would heve been
    if position was left static. Multiple posibilities here or
    at least a differance in intepretation of the specs between:
    me (Christian Bottelier), Opera, IE, ...;
    and Boris Zbarsky with Mozilla.

    First intrepetation would be:
    - Take the top as if the position would not have been absolute
      so we take the C.B. of p1 being 0px. (Section 10.6.5 literal)

    - Take the top as if the position would not have been absolute
      so that the image would be still inline and would have been
      positioned next the img1 top being 0px. (Section 10.6.5
      free interpretation of the as it would been static so the
      image would not have been forced block but was still in-line)

    - Since the display property is forced block we take the
      bottom of img1 as the top for img2. (?Ignore? section 10.6.5
      substitution 2 because it is overruled by the display
      being block so align using the rules in section 9.4.1)

Interpretation 1 and 2 give:

+-body C.B.--------------------------+
|+-div1 C.B.------------------------+|
||+-img1 C.B.---+----+-img2 C.B.---+||
|||             |    |             |||
|||             |    |             |||
||+-------------+----+-------------+||
|+----------------------------------+|
+------------------------------------+


Interpretation 3 give:

+-body C.B.--------------------------+
|+-div1 C.B.------------------------+|
||+-img1 C.B.---+------------------+||
|||             |                  |||
|||             |                  |||
||+-------------+----+-img2 C.B.---+||
|+-------------------|-------------|+|
|                    |             | |
|                    +-------------+ |
+------------------------------------+


These three interpretations all have something in them that would
made them more or less valid. To my opinion the first is the most plausible 
according to Boris the third is.

No matter which of the interpretations is correct I think the CSS2 specs 
need to be updated to clarify on the correct interpretation. And ofcouse I 
(and Boris) want to know the correct interpretation.

Regards
Christian Bottelier

Received on Sunday, 30 June 2002 09:43:45 UTC