【发布时间】:2018-10-04 22:50:27
【问题描述】:
我在使用 Firefox 时遇到了一个小问题:当 dom 上显示大的模糊元素 时,一切都非常缓慢。
我注意到的一些事情:
- 在一些适度的配置中,回流事件甚至可以冻结选项卡
- 在高端 GPU 上,FPS 稍好一些,所以我猜这个过滤器是 GPU 激活的
- Chrome 和 Safari 运行非常流畅
- 即使没有动画,CPU 使用率也非常高,任何交互都很滞后
好的,给我看代码
一定要点击展开窗口,让所有图片都显示出来,否则动画会保持流畅。
我正在创建一个带有填充动画的回流事件,以故意给浏览器施加压力,但整体交互滞后。
在像 CodePen 这样更复杂的网页上,FPS 更糟糕:https://codepen.io/creaforge/pen/mLPqNg 即使没有触发转换编辑,这支笔也会显示一些性能问题(尝试选择代码块)
div {
background-color: #eaeaea;
transition: all .5s;
padding: 20px;
}
div:hover {
padding-bottom: 100px;
}
img {
filter: blur(40px);
}
<div>Hover me --> slow animation</div><br/>
<img src="http://www.placecage.com/c/200/600">
<img src="http://www.placecage.com/c/200/610">
<img src="http://www.placecage.com/c/200/620">
<img src="http://www.placecage.com/c/200/630">
<img src="http://www.placecage.com/c/200/640">
【问题讨论】:
-
动画不要使用padding,用translate代替,使用padding会严重影响CPU使用率
-
这是故意的,我会更准确地编辑问题!
-
我不确定问题出在哪里,但帮助 Firefox 开发人员的一个好方法是使用 performance profile 和 file a bug!
-
谢谢 Dexter 我不知道这个工具。我会再做一些测试,创建一个易于重现的测试用例并提交错误
-
这是一个 firefox 错误:bugzilla.mozilla.org/show_bug.cgi?id=925025 - 如果您遇到此问题,请随意修改!