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


Posted in HTML / CSS onApril 20, 2016

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

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

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

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

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

transform的截图

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

 

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

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

transform的截图

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

我们可以看到,使用left写的整个动画过程中,浏览器一直在进行绘制处理。而相对而言,使用transform时,仅仅是在动画开始和结束是进行了绘制。因此,对于动画的性能上,transform要更为出色。至于原因,这里就要引入一个触发重新布局的概念:

我们在改变一些属性时,如果是跟layout相关的属性,则会触发重新布局,导致渲染和绘制所需要的时间将会更长。因此,我们在写动画的时候因该规避这些属性:width, height, margin, padding, border, display, top, right, bottom ,left, position, float, overflow等。
不会出发重新布局的属性有:transform(其中的translate, rotate, scale), color, background等。

所以,我们平时在写css动画时,应该优先使用不触发重新布局的属性,这样可以使我们所展示动画效果的更加流畅。

以上这篇深入理解css属性的选择对动画性能的影响就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

原文地址:http://www.cnblogs.com/dehua-chen/archive/2016/04/20/5411728.html

HTML / CSS 相关文章推荐
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 HTML / CSS
css3实现3D色子翻转特效
Dec 23 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
Jan 23 HTML / CSS
浅谈three.js中的needsUpdate的应用
Nov 12 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
Sep 06 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
配置H5的滚动条样式的示例代码
Mar 09 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
Jul 29 HTML / CSS
amazeui页面校验功能的实现代码
Aug 24 HTML / CSS
详解CSS中的特指度和层叠问题
Jul 15 HTML / CSS
css 边框添加四个角的实现代码
Oct 16 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 #HTML / CSS
css3 中的新特性加强记忆详解
Apr 16 #HTML / CSS
前端隐藏出边界内容的实现方法
Apr 14 #HTML / CSS
使用CSS3编写类似iOS中的复选框及带开关的按钮
Apr 11 #HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
Apr 08 #HTML / CSS
CSS3的Flexbox布局的简明入门指南
Apr 08 #HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
Apr 05 #HTML / CSS
You might like
PHP 中的一些经验积累
2006/10/09 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
PHP实现简单的计算器
2020/08/28 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
python实现神经网络感知器算法
2017/12/20 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
公司新年寄语
2014/04/04 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
会计专业自荐书
2014/07/08 职场文书