We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
painting 是性能最大的杀器。80%原则应该先寻找这部分的优化。
这个 Layer 的概念模型,感受一下。通过把不同的内容放在不同的「层」,从而渲染时只需要「平移、覆盖」过去,而不需要擦除原来的全部重画。技术上,如何实现不同的「层」呢?如何有划分不同的层呢?如何 profile 层带来的 painting 方面的影响呢?
技术上,有很多手段可以「告诉浏览器为元素创建独立的层」,比如一些 CSS 元素的应用(position: absolute/relative、visibility、transform 等)。从底层实现原理来看,最终是通过 z-index 来区分,具体数值无所谓,只要可以表达「大小」和「相等」关系即可。
position: absolute/relative
visibility
transform
z-index
will-change: transform 适用于你有很多元素的「移动」、「位置变换」等情形,为每个元素创建自己的一个层,不会导致整个画面重绘。目测可以节省大量的效率。
will-change: transform
当然,每多用一个层,会增加浏览器的 RAM 内存和性能等开销,与之节省的 repaint 开销相比,是否值得,就是一个值得权衡的问题了。
目标是:Painting 2ms,Composite Layers 2ms。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
painting 是性能最大的杀器。80%原则应该先寻找这部分的优化。
这个 Layer 的概念模型,感受一下。通过把不同的内容放在不同的「层」,从而渲染时只需要「平移、覆盖」过去,而不需要擦除原来的全部重画。技术上,如何实现不同的「层」呢?如何有划分不同的层呢?如何 profile 层带来的 painting 方面的影响呢?
技术上,有很多手段可以「告诉浏览器为元素创建独立的层」,比如一些 CSS 元素的应用(
position: absolute/relative
、visibility
、transform
等)。从底层实现原理来看,最终是通过z-index
来区分,具体数值无所谓,只要可以表达「大小」和「相等」关系即可。will-change: transform
适用于你有很多元素的「移动」、「位置变换」等情形,为每个元素创建自己的一个层,不会导致整个画面重绘。目测可以节省大量的效率。当然,每多用一个层,会增加浏览器的 RAM 内存和性能等开销,与之节省的 repaint 开销相比,是否值得,就是一个值得权衡的问题了。
目标是:Painting 2ms,Composite Layers 2ms。
The text was updated successfully, but these errors were encountered: