我对我们的一个webapps中过多的“复合层”,“重新计算样式”和“更新层树”事件非常感兴趣。我想知道这里是什么造成了他们。
如果您将Chrome指向我们的快速移动流之一,请说https://choir.io/player/beachmonks/github,然后启用“FPS计”,您可以看到该应用在我们开启时大多数时间都能达到约60fps顶部。
但是,只要我向下滚动几条消息并保持屏幕原样,FPS费率就会急剧下降到10左右甚至更低。代码在这里做的是它呈现每个传入的消息,将其添加到顶部并向上滚动列表Npx,这是新消息的高度,以保持视口位置不变。
(我知道scrollTop会使屏幕无效但我已经仔细地命令操作以避免布局颠簸。我也知道每秒发生的同步重绘,它是由jquery.sparkline引起的,但它与此无关讨论。)
这是我在尝试描述它时看到的内容。
。
您认为可能会导致大量的图层操作?
答案 0 :(得分:7)
需要重新绘制的所有元素上的CSS属性will-change: transform
解决了我的复合图层太多的问题。
答案 1 :(得分:2)
我有同样的问题。我通过减小图像的大小来修复它。
可滚动列表中有一些缩略图。每个缩略图的大小为3000x1800,但它们通过CSS调整为62x44。使用62x44图像减少了"复合层"。
所消耗的时间答案 2 :(得分:0)