W3C home > Mailing lists > Public > www-style@w3.org > July 2008

Re: Additional value for the visibility property

From: Andrew Fedoniouk <news@terrainformatica.com>
Date: Wed, 09 Jul 2008 12:25:20 -0700
Message-ID: <487510A0.3030104@terrainformatica.com>
To: David Hyatt <hyatt@apple.com>
CC: robert@ocallahan.org, "Ph. Wittenbergh" <jk7r-obt@asahi-net.or.jp>, W3C Style List <www-style@w3.org>

David Hyatt wrote:
> On Jul 9, 2008, at 1:26 PM, Andrew Fedoniouk wrote:
>
>>
>> Robert O'Callahan wrote:
>>> On Wed, Jul 9, 2008 at 3:27 PM, Andrew Fedoniouk 
>>> <news@terrainformatica.com <mailto:news@terrainformatica.com>> wrote:
>>>
>>>    That is what I would like to clarify - how exactly it should be
>>>    rendered.
>>>
>>>
>>> I think it's clear that according to the spec it should be rendered 
>>> the way Gecko and Webkit render it.
>>>
>>> If you're suggesting that the spec should be changed --- this has 
>>> been specified and interoperably implemented in Gecko and Webkit for 
>>> years, so I think you'd need a pretty strong argument. Personally it 
>>> feels unnatural to me to render an element and its descendants as a 
>>> single composition group but carve out an exception for descendants 
>>> that happen to be out-of-flow. (Although I'm not actually sure what 
>>> you're proposing, since there might be descendants which are 
>>> out-of-flow but still have the element as their containing block 
>>> ancestor.)
>> Opacity is an attribute of some layer. Element and its in-flow 
>> descendants is a layer. absolute positioned elements
>> establish their own layers.
>>
>> It appears that Opera:
>> 1) draws element and only in-flow children on the offscreen buffer 
>> (layer)
>> 2) each absolute positioned element - descendant of transparent 
>> parent - inherits value of opacity and draws
>> itself on separate offscreen buffer (layer).
>> 3) these buffers are blended separately with respect of z-order.
>>
>> That appear as the only correct way of doing this.
>>
>> FF and WebKit share the same error. Take a look on these samples:
>>
>> http://terrainformatica.com/w3/opacity.htm
>> http://terrainformatica.com/w3/no-opacity.htm
>>
>> These two files are the same except of transparency.
>> Note that FF and WebKit simply ignore value of z-index when opacity 
>> is applied.
>
> FF and WebKit have the correct rendering.  Opacity is supposed to 
> establish a stacking context (it's as though a z-index of 0 is 
> specified) precisely to avoid the problem of requiring multiple 
> buffers.  You should never have to use separate buffers.  The spec 
> vaguely implies this when it mentions that an element including its 
> children should blend as a unit.  To use separate buffers contradicts 
> what the spec is saying.
Formally speaking: current specification is buggy by itself so no one 
can prove "correct rendering".
Definition of z-index and stacking context conflicts with the opacity 
and "draw all children".

So far there are two ways of fixing this:
1) Mozilla way: 
http://lists.w3.org/Archives/Public/www-style/2008May/0147.html
2) and Opera way (explained above)

 From human perspective Opera way is most natural I would say.
It would be quite surprising if applying of opacity will change the 
whole z-index hierarchy.
>
> This issue will be clarified in the spec.
>
But how? That is the question and still subject of discussion as far as 
I understand.
> See Issue 26:
>
> http://csswg.inkedblade.net/spec/css3-color
>
> http://lists.w3.org/Archives/Public/www-style/2008May/0147.html
>
> dave
> (hyatt@apple.com)
>

-- 
Andrew Fedoniouk.

http://terrainformatica.com
Received on Wednesday, 9 July 2008 19:26:12 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:55:10 GMT