Why Hardware-Accelerated CSS animation cost too much quot;composite layerquot; times in main thread?(为什么硬件加速的 CSS 动画花费太多“复合层?主线程中的时间?)
问题描述
我用一张大图(33440 x 440)对大图进行变换,然后实现类似帧动画的动画;我还使用 translate3D 来获得 GPU 加速,
I use a big picture(33440 x 440) and transform the big image, then achieve a animation like as frame animation; and also I use the translate3D to get a GPU Acceleration,
下面的简化代码:
@keyframes testName {
0% { transform: translate3d(0,0,0); }
100% { transform: translate3d(-33440px,0,0); }
}
众所周知,复合层的工作将转移到 GPU;但是在性能的chrome devtools中,主线程中复合层的任务花费了太多时间:(解码图像发生在光栅线程而不是主线程中)
as we know, the work of composite layers will move to GPU; but in chrome devtools of performance, the task of composite layers in main thread cost too much time: (decode image happens in raster thread not in main thread)
那么为什么任务复合层
在主线程中做了什么?
so why and what the taskcomposite layers
did in main thread?
推荐答案
问题是你的图片太大了.合成图层"大致是指将页面上的所有元素(图层)以正确的顺序和位置相互叠加,如果这些图层很大,这将需要很长时间.仅仅因为它发生在 GPU 上并不意味着如果你将 14 兆像素的图像投入其中,它就会立即发生.
The problem is that your image is HUGE. "Compositing layers" roughly means rendering all of the elements (layers) on the page on top of each other in the correct order and location, which will take a long time if these layers are gigantic. Just because it's happening on the GPU doesn't mean it will happen instantly if you throw a 14 megapixel image into it.
这篇关于为什么硬件加速的 CSS 动画花费太多“复合层"?主线程中的时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么硬件加速的 CSS 动画花费太多“复合层"?主线程中的时间?
基础教程推荐
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- 直接将值设置为滑块 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01