首页 > 开发 > CSS > 正文

深入理解css属性的选择对动画性能的影响

2024-07-11 08:33:07
字体:
来源:转载
供稿:网友

现在手机的占比越来越高,各种酷炫页面层出不穷,这些特效都离不开css动画。说到css动画,主流的情况也就无非这两大类:位移和形变。而我们在写一个动画特效的过程中,如何去提升它的性能呢?当然首先我们需要去了解一下基本的概念,比如浏览器渲染的工作原理等,这些我也在读了几位大牛写的相关文章后才有了一定的了解,这边我也不细说了,有兴趣的同学可以去了解一下。本次的目的简单粗暴地讲,其实就是我们应该使用什么css属性去进行动画的绘制时,能够有效的提高浏览器在渲染和绘制过程中的性能。

分别使用了left和transform在2秒内向右平移了500px的位移。代码如下:

JavaScript Code复制内容到剪贴板
  1. <style>    .box-ps,.box-tf{position:absolute;top:0;left:0;width:100px;height:100px;background-color:red;}   
  2. .box-ps{-webkit-animation:box-ps 2s linear;}    .box-tf{-webkit-animation:box-tf 2s linear;}   
  3.    @-webkit-keyframes box-ps{   
  4. 0%{    left:0;   
  5. }100%{    left:500px;   
  6. }    }   
  7.    @-webkit-keyframes box-tf{   
  8. 0%{    -webkit-transform:translate(0,0);   
  9. }100%{    -webkit-transform:translate(500px,0);   
  10. }    }   
  11. </style>      
  12. <body>    <div class="box-ps"></div>   
  13. <div class="box-tf"></div>    </body>  

然后在chrome下得到了如下的结果,第一张为使用left的截图,第二张为使用transform的截图:

transform的截图

 

显而易见,我们在帧模式这里可以看到left比transform帧数要低,而且在渲染和绘制这边的耗时,left要远远的大于transform。看到这里,相信大家心里已经有结论了。
我们再利用chrome的show paint rectangles来观察一下两者在动画过程中,渲染和绘制的区域有何差异,第一张为使用left的截图,第二张为使用transform的截图:

transform的截图

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表