Re: [css, bug of specification] negative margins, painting order, stacking context.

Ugh, at the last minute I changed my mind on the order in which to
present the cases of overflow from statics and overflow from floats in 
my last email on this subject, and ended up with a copy-paste error 
which made the key argument incorrect and probably confusing.

When I said:
> Let's use the simplified world-view you suggested, which happens to be
> that of CSS1.  The only painting contexts are the root element and
> floats, and the root element is the only true stacking contexts since
> there is no positioning.  Suppose the root element contains an in-flow
> child D1 with a fixed height which contains red-background text that
> overflows vertically -- perhaps because the user has increased the text
> size via their browser's UI -- and overlaps D1's subsequent sibling: an
> in-flow D2.  Retrospectively applying the current CSS21 stacking
> mechanism to CSS1 (which did not explicitly discuss stacking at all,
> AFAICT) we find (as a result of the painting layer order) that the
> overflowed text and its red background are rendered atomically above
> background of D2 but /underneath/ the text of D2, ensuring that all text
> is visible (albeit perhaps difficult to read).  In your schema B above,
> the red background of the the overflowed text renders on top of D2's
> text, resulting in D2's text being obscured.

the final sentence should have read:

"In your schema B above, the atomically-rendered background+text of D2 
is painted on top of the overflowed text (and its red background) of D1, 
thus obscuring it if D1's background is non-transparent."

The case of overflow from floats was described correctly, I believe.

Now that I'm having to write a correction, I might as well add in an 
extra sentence which I forgot to write in my description of painting and 
stacking contexts. I wrote:

> Now, painting contexts take responsibility for painting their dependants
> ("descendants" in the sloppy language of 9.9.1 in CSS21).  They do so by 
> dividing up dependant boxes into what I call "painting layers".  The 
> painting layers are, loosely speaking, the background of the painting 
> context itself, followed by the backgrounds of in-flow non-positioned 
> blocks, followed by the atomically-represented painting contexts formed 
> by non-positioned floats, followed by the atomically-painted 
> background+text of non-positioned inlines (the "content").

I should have appended:

"True stacking contexts have several extra painting layers for 
positioned dependants with negative, auto or zero, or positive values of 
z-index."

Sorry for any confusion,
Anton Prowse
http://dev.moonhenge.net

Received on Wednesday, 11 February 2009 18:56:04 UTC