yang-xianzhu / astro-blog

🚀-基于Astro搭建的个人博客
https://yang-xianzhu.github.io/
5 stars 0 forks source link

CSS居中为什么要使用transform(为什么不使用marginLeft/Top)? #16

Open yang-xianzhu opened 1 year ago

yang-xianzhu commented 1 year ago

transofrm属于合成属性(composite property),对合成属性进行transition/animation动画将会创建一个合成层(composite layer),这使得被动画元素在一个独立的层中进行动画。通常情况下,浏览器会将一个层的内容先绘制进一个位图中,然后再作为纹理(texture)上传到GPU,只要该层的内容不发生改变,就没必要进行重绘(repaint),浏览器会通过重新复合(recomposite)来形成一个新的帧。 top/left属于布局属性,该属性的变化会导致重排(reflow/relayout),所谓重排即指对这些即节点以及受这些节点影响的其它节点,进行CSS计算->布局->重绘浏览器,浏览器需要为整个层进行重绘并重新上传到GPU,造成了极大的性能开销。