【发布时间】:2015-01-04 02:31:05
【问题描述】:
我正在尝试找出动画极度减速的原因。正如您所见(下图),绘制时间偶尔会出现峰值并导致帧速率降至
我不能展示这个网站,但我可以告诉你它在前端不是轻量级的,它是一个设计展示网站,所以有很多从外部动画的大图像的视口。我需要确定这是否只是他们必须处理的事情,或者是否可以采取任何措施来减少油漆时间。
所有的动画都是使用translate() 函数实现的。这组特定动画的 CSS 如下:
.page {
height: 100%;
position: absolute !important;
-webkit-transform: translateY(100%);
transform: translateY(100%);
/**
* Override ng-animate-block-transition on this element. Has an important declaration.
*/
-webkit-transition: transform ease-in-out 0.5s !important;
transition: transform ease-in-out 0.5s !important;
}
.page.ng-show {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.animate-in-enter-complete .page-peak .page.ng-show {
-webkit-transform: translateY(-3%);
transform: translateY(-3%);
}
.animate-in-enter-complete .page-peak .page.page-next {
-webkit-transform: translateY(95%);
transform: translateY(95%);
}
这是我为这个特定动画制作的个人资料。层根是#document,我对这些工具有点陌生,但这是否意味着它正在重新绘制整个 DOM 树?
我怎样才能找出造成这种情况的原因?
【问题讨论】:
-
我认为如果无法看到实际情况,很难判断这里发生了什么......也许你可以重现一个显示相同问题的简单小提琴?
-
这是一个非常复杂的网站,我认为我无法在小提琴中重现该问题。在它发布之前,我将无法展示任何类型的演示,不过我会看看我是否可以在今天晚些时候试一试。我更多的是寻找“我该如何寻找根本原因?”。
-
好啊...你知道关于连续重绘模式的任何事情吗?在开发人员工具中,您有一个名为“启用连续页面重绘”的选项(在我的情况下,在“渲染”选项卡中)。如果你检查它,你现在会在右边看到一个时间图。然后显示/隐藏一些 DOM,启用/禁用一些 CSS 规则,看看重绘需要这么长时间。你有一篇很好的帖子来解释它here
-
只是为了测试,尝试为过渡方法提供固定值而不是百分比。知道这是否会以任何方式改变性能会很有趣