【发布时间】:2015-06-02 08:07:55
【问题描述】:
我的网站上的动画速度很慢。
经过一番调查,我发现(通过 DevTools 时间线选项卡)问题在于整个页面正在重新绘制,而不仅仅是动画 div。
我检查了“显示复合层边框”选项,发现有时动画 div 位于另一个渲染层中。
但我找不到一致的行为:
- 当 div 不在另一层时 - 动画很慢。
- 当 div 在另一层时,动画有时快有时慢,这取决于页面中是否存在其他元素(带有
position:fixed的 div、marquee等)。这些其他元素似乎与 DOM 树中的动画 div 完全无关,但显然对动画期间页面的呈现有影响。
我发现了几篇文章(1、2、3、4、5)提出了“强制”Chrome 在另一个渲染层中渲染元素的可能方法,但其中大部分是旧的(事情可能已经改变)。
此外,它们通常不会说明元素如何在渲染层方面相互影响。
- Chrome 如何决定将哪个元素放入哪个层?
- 我怎样才能知道我的案件的决定是什么? (即调试渲染层)
- 关于渲染层,不同元素如何相互影响?
- 另一层中的元素的动画如何导致整个页面的重新绘制? (在某些情况下会发生这种情况)
- 如何确保快速渲染动画?即 - 强制元素进入另一层并确保动画不会导致整个页面的重新绘制。
- 最后 - 我如何才能及时了解浏览器渲染算法的变化,以便将来不再出现这些问题?
【问题讨论】:
-
问题太多了。
-
对于第一个问题,这个来自 Chromium 的文件非常清晰且不言自明。 chromium.googlesource.com/chromium/src.git/+/master/third_party/…
标签: html css google-chrome google-chrome-devtools chromium