New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 666779 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 3
Type: Bug



Sign in to add a comment

Css animation problems with nested opacities

Reported by jhic...@gmail.com, Nov 18 2016

Issue description

Chrome Version       : 54.0.2840.98 (Official Build) (64-bit)
URLs (if applicable) : https://jsfiddle.net/76n1Lrbm/
Other browsers tested:
  Add OK or FAIL, along with the version, after other browsers where you
have tested this issue:
     Safari: FAIL
    Firefox: FAIL
         IE:

What steps will reproduce the problem?
(1) Go to the url watch for a few seconds

What is the expected result?
The div in the center (.nester) should be fading in and out.

What happens instead?
The div in the center pops from one final animation state to the next. While everything else has a smooth transition.


Here it is broken - https://jsfiddle.net/76n1Lrbm/
Here is an interim fix - https://jsfiddle.net/76n1Lrbm/1/
 
Labels: M-54
Components: Blink>JavaScript
Labels: Needs-Bisect Needs-Triage-M54
Cc: krajshree@chromium.org
Labels: Needs-Feedback OS-Mac
Unable to reproduce the issue in MacBook Pro (Retina, 15-inch, Mid 2014) using chrome reported version #54.0.2840.98 and latest canary #57.0.2926.0.

Also it is not reproducible in Win-10 and Ubuntu 14.04 by using chrome stable #54.0.2840.100 and latest canary #57.0.2926.0.

Steps followed to reproduce the issue are as follows:
-----------
1. Navigated to the URL: https://jsfiddle.net/76n1Lrbm/ and watched for a few seconds
2. Observed that the div in the center (.nester) was fading in and out as expected.

Attaching screen cast of both chrome and safari for reference.

jhicken@ - Could you please verify both screencasts and please let us know if anything missed from our side.

Thanks...!!
666779_Chrome.mp4
952 KB View Download
666779_Safari.mp4
1.2 MB View Download

Comment 4 by jhic...@gmail.com, Nov 21 2016

I'm kinda confused about the last comment. The screen cast shows the unexpected behavior. The box (.nester) is not animating. It's jumping from start to end transition states.

The attached gif shows the expected behavior. Where the box (.nester) appears to animate.

https://jsfiddle.net/e23toanp/


Nov-21-2016 08-13-58.gif
578 KB View Download
Labels: -Needs-Feedback
Labels: -M-54 -Needs-Bisect -Needs-Triage-M54 M-57
Status: Untriaged (was: Unconfirmed)
jhicken@ - Thanks for your clarification...!!

Able to reproduce the issue on Mac 10.11.6, windows 10 and Ubuntu 14.04 using chrome reported version #54.0.2840.98 and latest canary #57.0.2926.0.

This is a non regression issue as it is observed from M30 old builds.

Hence, Marking it as untriaged to get more inputs from dev team.

Thanks...!!

Labels: OS-Linux OS-Windows
Components: -Blink>JavaScript Blink>CSS
Not related to JavaScript/V8.

Comment 9 by shans@chromium.org, Nov 22 2016

Components: -Blink>CSS Blink>Paint
For clarity, in the attached test case the .wrapper and .fullBackdrop divs sit in front of the .nester div, which is completely static. The opacity of .wrapper animates between 0 and 1, but instead of this opacity change impacting .nester during animation, it only impacts at the start and end of each animation. So .nester appears to 'pop' from white to grey even though there's a div with smoothly animating opacity that is occluding it.

https://jsfiddle.net/76n1Lrbm/2/ may make this clearer. At any rate, this seems to be a paint bug, maybe something to do with layer creation and paint order?
Labels: Needs-Triage-M54
Cc: chrishtr@chromium.org
Status: Available (was: Untriaged)
Is this another case of the confusing spec behavior related to stacking contexts and opacity?
Status: WontFix (was: Available)
If an element has opacity < 1, it creates a stacking context.

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context

Therefore, the "wrapper" element creates a stacking context for any animation frame
other than the end, when opacity == 1. In such cases, the "wrapper", "fullBackdrop" and "nester" divs
all participate in the same stacking context. This means that they are sorted in paint order according
to their z-index values. Since "fullBackdrop" has z-index 100, it paints on top, which is why the white
is under the black-with-0.5-opacity of "fullBackdrop".

Paint order:

1. wrapper
2. nester
3. fullBackdrop

When opacity < 1 on "wrapper", "fullBackdrop" now participates in the stacking context of "wrapper",
which means that no matter what z-index it gets, it sorts only with itself and is painted along with "wrapper".

Paint order:

1. wrapper box decorations
2. fullBackdrop
3. wrapper end (apply opacity to stacking context children)
3. nester

You can fix this in your demo by always having "wrapper" be a stacking context, if that is desired. This
can be achieved by putting isolation: isolate on it, or perhaps by animating to 0.9999 opacity instead of
1.

Note that Firefox and Safari have the same behavior as Chrome, and all are correct according to spec.

Sign in to add a comment