- From: fantasai <fantasai@escape.com>
- Date: Sun, 29 Jul 2001 18:40:38 -0400
- To: www-style@w3.org
Ian Hickson wrote: | | I assert that the spec actually says that the | background images should be relative and clipped to | the padding edge, That is true. | while the background colours should be painted up to | the border edge. This is implemented in at least two | browsers (Netscape 6.x and Opera). Yes, that behavior can be deduced from the Errata, but not the original spec. | According to the CSS2 spec, section 14.2.1, | background-position specifies the position of a | background image relative to the padding edge of a | box, and tiling should cover only the content and | padding areas of a box: I don't dispute this. | And, according to section 8.5.3, borders are drawn | on top of a box's background: | | # All borders are drawn on top of the box's | background. | | This logically means the background color should be | underneath the border, but not the background image. The logic of this behavior escapes me. /Logically/ backgrounds should have consistent confines. http://fantasai.tripod.com/Mozilla/2001/border.html | > I think it would be easier to correct the one | > passing mention of background in the border area | > in 8.5.3 than the five (or six) instances of just | > content & padding. | | The instances are already corrected -- see the | errata. The only outstanding errata item is that | the spec should more explicitly state that the | background images are clipped to the padding edge. It's stated in several places already. The CSS2 spec is very explicit about this. | This testcase demonstrates why it is IMHO nicer for | the background images not to overlap the border: And I agree with you. The issue is further reinforced if you imagine the use of background-size to fill the background area with an image. | Changing the spec at this point should be avoided | if at all possible, since it would break at least | two pre-existing implementations, namely Opera and | Netscape. Two implementations, each of which behaves differently, neither of which have consistent dimensions for the background area. Here, I'll support the statement in my previous post: Analysis of spec - CSS1 explicitly places the borders on top of the element's background. (Section 5.5.17) I see no place where it contradicts this behavior. The CSS2 spec, in four other places, refers to the behavior specified in 14.2, where 'background' is defined. Only in Section 8.5.3 does it extend 'background' to the border area. 14.2 - In defining "background", the spec writes that it gets painted in the content and padding areas. Borders styles are mentioned in a separate sentence dealing with border properties. 14.2 def 'background-image' - The spec writes that tiling only covers content and padding areas. 14.2 def 'background-attachment' - The spec writes that a a background image is only visible within the padding and content areas. 8.1 - The spec states that the backgrounds of the padding and content areas are specified by the background properties, but that the background of the border area is specified by the border properties. (This can make sense because content that overflows the border is rendered on top of it, not underneath it.) 17.5.1 - The image depicting a table with background- colored, double-bordered cells does not show any of the background between the two stripes of border. This leads me to believe that whoever wrote backgrounds into the spec expected them to render in the content and padding areas, but not the border area. The CSS2 Errata, on the other hand, want to reconcile with CSS1 and extend backgrounds to the border edge. They haven't quite accomplished that--compare my list above with the two errata that have been published. The errata seem to support Mozilla's interpretation. Browser testing results and comments: Microsoft has background problems in any case: They render 0% 0% as upper left corner of the border edge, and I see nothing in either spec to support that interpretation. from 'background-position' - "Initial: 0% 0%" ... "With a value pair of '0% 0%', the upper left corner of the image is aligned with the upper left corner of the box's padding edge." ^^^^^^^^^^^^ MSIE extends both background color and background images to the border edge. *BUT* they render according to 14.2 for table elements, (for which backgrounds are used much more extensively by authors than for block elements.) So MSIE needs to change it's background rendering regardless of whether the spec changes or not. Opera is also not consistent in its interpretation. If there is just a background color, it behaves according to Section 8.5.3. However, if there is a background image, it follows 14.2. They should choose either one or the other. Mozilla behaves similar to Opera, in that it only extends the tiled image to the padding edge. However, unlike Opera, it paints that image over a background color extending to the border edge. This, too, is inconsistent. Amaya, the W3C browser, behaves according to section 14.2, based on testing 'double' (since the copy I have [v5.1] does not support 'dashed' or 'dotted'). Conclusions - The CSS2 spec almost completely concurs with the statement confining backgrounds in the content and padding areas, while the CSS1 spec is completely devoted to extending backgrounds to the border edge. The CSS2 Errata shift CSS2 halfway towards CSS1 behavior, which is neither here nor there, but equivocating somewhere in between. Microsoft would probably gain more than it would lose by choosing to render per 14.2. Opera has nothing to lose by choosing one over the other; the same goes for Mozilla. Amaya is already rendering according to 14.2. Thus my previous comment: > ...even though CSS1 explicitly paints borders on > top of the background, with the current state of > browser implementations and CSS2 wording, I think > it would be easier to correct the one passing > mention of background in the border area in 8.5.3 > than the five (or six) instances of just content > & padding. ~fantasai
Received on Sunday, 29 July 2001 18:39:29 UTC