~技术问答题~
返 回

No.769 居中为什么要使用transform(为什么不使用marginLeft/Top)(阿里)

题目描述~ 略...

寄语:问题比答案更重要

建议自己先有个思考的过程,有了自己的答案或者疑问再看解析进行对比。

目前解析在逐步添加中,也可以跳转链接查看。

transform 属于合成属性(composite property),对合成属性进行 transition/animation 动画将会创建一个合成层(composite layer),这使得被动画元素在一个独立的层中进行动画。通常情况下,浏览器会将一个层的内容先绘制进一个位图中,然后再作为纹理(texture)上传到 GPU,只要该层的内容不发生改变,就没必要进行重绘(repaint),浏览器会通过重新复合(recomposite)来形成一个新的帧。

top/left属于布局属性,该属性的变化会导致重排(reflow/relayout),所谓重排即指对这些节点以及受这些节点影响的其它节点,进行CSS计算->布局->重绘过程,浏览器需要为整个层进行重绘并重新上传到 GPU,造成了极大的性能开销。


详解:

https://juejin.im/post/5c32b0fb6fb9a049ac7950d9

https://blog.csdn.net/callmeCassie/article/details/89290945

https://www.cnblogs.com/accordion/p/4593576.html

https://www.zhihu.com/question/33629083

具体应用:

https://www.jianshu.com/p/17e289fcf467

解析或答案仅供参考。

关于作者

zz_jesse 专注前端

掘金 GitHub 开源项目

公众号@前端技术江湖

一个可以帮开发者成长的公众号前端面试题库更新通知前端学习资料、干货文章

技术交流群

交流中成长大厂内推机会