- From: Alan Gresley <alan@css-class.com>
- Date: Wed, 25 Jun 2014 23:53:23 +1000
- To: Rik Cabanier <cabanier@gmail.com>
- CC: www-style list <www-style@w3.org>, "public-fx@w3.org" <public-fx@w3.org>
- Message-ID: <53AAD453.2010601@css-class.com>
On 21/06/2014 2:42 AM, Rik Cabanier wrote: > On Thu, Jun 19, 2014 at 11:29 PM, Alan Gresley <alan@css-class.com> wrote: > >> On 20/06/2014 12:40 PM, Rik Cabanier wrote: >> >>> All, >>> >>> the background-blend-mode [1] property recently landed in Firefox and >>> Chrome and we noticed that a very common design is to use it to create >>> patterns with gradients. [2] >>> >>> The spec states: >>> >>> Each background layer must blend with the element’s background layer that >>> is below it and the element’s background color. Background layers must not >>> blend with the content that is behind the element, instead they must act >>> as >>> if they are rendered into an isolated group. >>> >>> >>> This works for most elements except for the root element which has a >>> different paint order [3]: >>> >> >> It's not a different painting order but different painting method. >> >> >>> The background of the root element becomes the background of the canvas >>> and >>> covers the entire canvas, anchored (for 'background-position') at the same >>> point as it would be if it was painted only for the root element itself. >>> The root element does not paint this background again. >>> >> >> Note that the root element may not be <html> but something like <svg> or >> possibly <any-name-element> if using XML. This is why the spec mentions >> root element here since CSS can style different web languages. >> >> >>> All browsers implement painting of the root backdrop by drawing the >>> background color and images on top of a 100% opaque white backdrop. >>> >> >> This is not quite true. In the Firefox setting for 'Content > Colors', IE >> setting 'Appearance > Colors' and Opera setting for 'Preferences > >> Webpages', I can change the background/backdrop of the root element to at >> least a minimum of 70 colors. Internally, each UA has a hidden element >> wrapping the root element. For old Opera (not sure about Blink), this was a >> black backdrop. > > > This is unspecified behavior. What part of the above is unspecified behavior? For legacy reasons, I don't believe it is wise to remove user control of the appearance of the backdrop. Some users use these browsers for accessibility reasons since they can control colors. > Prior to blending, this did not make a difference but now we need to know > that there could be another color 'layer' for the root element. Upon testing, I find that Firefox does *not* allow any blending of any background layers that are painted to the root element but Chrome does. A test. http://css-class.com/test/temp/blending-backdrop.htm Firefox shows red, lime and blue where Chrome shows cyan, fuchsia and yellow since the 'background-blend-mode' has the value of 'exclusion'. >>> Because of this, background images that would blend with transparency >>> (which doesn't change the color), now blend with white and display >>> differently. >>> >> >> Agree. An image with semi-transparent red rgba(255,0,0,0.5), the blended >> color would paint an opaque 'salmon'. If a user had white text and black >> background/backdrop for accessibly reasons, the blended color would paint >> opaque 'maroon'. > > > Yes, or if you use any color with 'screen', the content completely > disappears. Not in Firefox (see test below) but yes in Chrome. http://css-class.com/test/temp/blending-backdrop2.htm >>> My question is, should we keep it as specified and make a note in the spec >>> that the root element behaves differently, or should we fix the >>> implementation so background images blend on a transparent backdrop >>> followed by matting and clarify the paint order in css colors? >>> >>> I think authors would prefer the latter but they can work around it if >>> needed. >>> >> >> For accessibly reasons, background images should blend on a transparent >> backdrop. > > > I agree that authors would prefer that the blending happens in a > transparent group. I'm unsure what that has to do with accessibility > though. Can you explain? If you look at the test above, you will see that Firefox has already taken control of the painting of the root element. What I mean by accessibility is that if I user needs to have white text of a background to read, then a user should be able to override an author style sheet. See attached screenshot named 'colors-settings.jpg'. If I un-tick the box with the text 'Allow pages to choose their own colors, instead of my selection above', then I would expect to see all backgrounds of any element colored black and all text colored white. 1: http://dev.w3.org/fxtf/compositing-1/#background-blend-mode 2: http://codepen.io/adobe/pen/6bc59f6e296119ff0282cd37a6fd3c22 http://bennettfeely.com/gradients/ 3: http://www.w3.org/TR/CSS2/colors.html#background -- Alan Gresley http://css-3d.org/ http://css-class.com/
Attachments
- image/jpeg attachment: colors-settings.jpg
Received on Wednesday, 25 June 2014 13:53:52 UTC