Shorthand transform values render no animation with transform-origin
Reported by
beneb.i...@gmail.com,
Jun 13 2016
|
||||||||||
Issue descriptionChrome Version : Version 51.0.2704.84 (64-bit) URLs (if applicable) : http://jsbin.com/kajugapaya/edit?html,css,output Other browsers tested: Add OK or FAIL, along with the version, after other browsers where you have tested this issue: Safari: OK (9.1) Firefox: OK (46.0.1) IE: What steps will reproduce the problem? (1) Visit the JSBin, animation plays. (2) Change the animation name to 'b'. (3) No animation observed. What is the expected result? That changing the animation name has no impact on rendering. What happens instead? A flickering box is shown instead of the animation. Please provide any additional information below. Attach a screenshot if possible.
,
Jun 14 2016
Change the animation name to 'b' please,you will find it.
,
Jun 14 2016
In the 'b' keyframes, animating from "scale(1)" to "scaleY(0)" is causing a 50-50 flip, as it cannot interpolate between them. If you change the "scale(1)" to "scaleY(1)" to match the second keyframe, it animates again. Can you please clarify which part of this behaviour you would like to report as a bug?
,
Jun 14 2016
Thanks for the update. able to reproduce the issue on windows 7, Linux Ubuntu 14.04 and Mac 10.11.5 using chrome version 51.0.2704.84 and canary 53.0.2766.0. This is observed till M43 builds.M42 and prior builds are not performing any animation.The box is not flickering also. Marking it as Untriaged to get more inputs from dev team. Thanks,
,
Jun 14 2016
Readding Needs-Feedback since we're waiting on the reporter's response to my question in #3.
,
Jun 14 2016
@suzyh As I understand the specification, `scaleY(0)` performs a transformation equivalent to `scale(1, 0)`. https://www.w3.org/TR/css-transforms-1/#typedef-transform-function You can verify that this interpolates correctly if you remove the `transform-origin` from both animations. The bug is that when adding `transform-origin`, in Chrome this no longer interpolates in the `b` animation, whereas it correctly interpolates in Safari & Firefox. I'm running OS X 10.11.4 if that helps.
,
Jun 14 2016
beneb.info: Thanks for the clarification. Setting to Update-quarterly since this is not a regression.
,
Jun 15 2016
If you change scaleY(0) to scaleY(0.1) it animates smoothly. Looks like something's seeing a non invertable matrix and bailing out on interpolating it. We shouldn't be hitting the matrix decomposition path here. Looks like main thread animations are affected as well. http://jsbin.com/meyowoceri/edit?html,css,js,console,output
,
Jul 4 2016
,
Jul 5 2016
Moving this nonessential bug to the next milestone. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Oct 6 2016
,
Nov 9 2016
,
Nov 22 2016
,
Nov 22 2016
Looks like the main thread code is not following spec correctly. https://drafts.csswg.org/css-transforms-1/#interpolation-of-transforms In TransformOperations::operationsMatch() we call isSameType() rather than canBlendWith(). Seems this behaviour's been around since 2008. https://chromium.googlesource.com/chromium/src/+/27d127f63bd464b8b26c2a568446cba9ac73e84b%5E%21/third_party/WebKit/WebCore/page/animation/ImplicitAnimation.cpp
,
Nov 23 2016
Submitted patch to fix: https://codereview.chromium.org/2519333004
,
Dec 7 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a5df6c6cf9b46d62121f92e5e4161058877c7051 commit a5df6c6cf9b46d62121f92e5e4161058877c7051 Author: alancutter <alancutter@chromium.org> Date: Wed Dec 07 02:41:29 2016 Don't use matrix decomposation on transform list interpolations with compatible pairs of operations The existing code required transform lists to have identical pairs of operation types in order to do pairwise interpolation instead of matrix decomposition. The transform spec states that each pair must have the same name or be a derivation of the same primitive. https://drafts.csswg.org/css-transforms-1/#interpolation-of-transforms This permits pairs like scaleX and scaleY to be compatible while our existing code would reject them and fall back to decomposition interpolation. This difference in behaviour is usually only noticable when one side of the interpolation is non-invertable. This patch updates our code to match the spec and more closely match Firefox's behaviour. Firefox falls back to post multiplication whenever mismatched rotate functions are blended which does not match spec text. Filed Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1322189 BUG= 619616 Review-Url: https://codereview.chromium.org/2519333004 Cr-Commit-Position: refs/heads/master@{#436845} [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/LayoutTests/animations/interpolation/transform-interpolation.html [add] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/LayoutTests/animations/transform-post-multiplication.html [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/ScaleTransformOperation.h [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TransformOperation.h [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TransformOperations.cpp [modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TranslateTransformOperation.h
,
Dec 7 2016
,
Dec 7 2016
@alancutter Thanks for fixing this! :) |
||||||||||
►
Sign in to add a comment |
||||||||||
Comment 1 by kavvaru@chromium.org
, Jun 14 2016Components: Blink>Animation
Labels: Needs-Feedback
489 KB
489 KB View Download