深入理解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将你的设计带入下个高度
Aug 08 HTML / CSS
深入CSS3 动画效果的总结详解
May 09 HTML / CSS
css3中检验表单的required,focus,valid和invalid样式
Feb 21 HTML / CSS
CSS改变网页中鼠标选中文字背景颜色例子
Apr 23 HTML / CSS
详解CSS3+JS完美实现放大镜模式
Dec 03 HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
Nov 07 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
Apr 26 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
Jan 30 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
Aug 24 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 HTML / CSS
boostrap modal 闪现问题的解决方法
Sep 01 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
咖啡的种类和口感
2021/03/03 新手入门
php curl的深入解析
2013/06/02 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
javascript一点特殊用法
2008/05/28 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
电子信息专业自荐书
2014/02/04 职场文书
体育教师自我鉴定
2014/02/12 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技