W3C home > Mailing lists > Public > www-style@w3.org > April 2007

Re: CSS Opacity

From: Pascal Germroth <pascal@germroth.name>
Date: Mon, 30 Apr 2007 19:18:14 +0200
Message-ID: <463624D6.1020206@germroth.name>
To: Bjoern Hoehrmann <derhoermi@gmx.net>
CC: Raul Dias <raul@dias.com.br>, www-style@w3.org

Hello,

>> Just to confirm:
>> body { opacity: .5; }
>> and
>> #photo { opacity: .5; }
>>
>> will result in a opacity of 0.5 and not 0.25, right? 
>> Meaning the values are absolute not relative.
> 
> No, and that would be rather surprising. Under this model, if you want
> to modify the opacity of a whole sub-tree uniformly, you would have to
> modify the opacity property of each and every element in it, and you'd
> expect that you can decrease the opacity of a child element relative
> to its parent, whereas this thread is about not being able to do that.

So, would it work if opacity values were not restricted to [0;1]?
Now I properly slept about it I think, you would have to render
everything into several bitmaps first and then blend it all together in
the final step, because if the document would look like this:

<a opacity="0.5">A
  <b opacity="0.5">B
    <c opacity="4.0">C</c>
  </b>
</a>

"A" should be displayed with an effective opacity of 0.5, "B" with 0.25
and "C" with 1.0

But if the tree is rendered recursively, C would be blended into B and
that composite then be blended into A which is finally blended into the
background. So when rendering <b> "locally" it would look like "B" had
an opacity of 1.0 and "C" one of 4.0 which causes a problem...

So some algorithm would be needed that allows opacity >1 but makes sure
that the "effective" opacity of no pixel will be out of [0;1]...

Maybe it is a bit of an overkill to implement this only for some little
effect nearly nobody uses (there are more pressing problems, really).


-- 
pascal
Received on Monday, 30 April 2007 17:19:18 GMT

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