css3针对移动端卡顿问题的解决(动画性能优化)


Posted in HTML / CSS onFebruary 14, 2020

一、使用css,jquery,canvas制作动画

1.Canvas

优点:性能好,强大,支持多数浏览器(除了IE6、IE7、IE8),画出来的图形可以直接保存为 .png 或者 .jpg的图形;

缺点:依赖于HTML,只能通过脚本绘制图形,没有实现动画的API(依靠事件和定时器更新);由于在 canvas 上以编程方式显示的文本其实就是位图,因此搜索爬行器将完全忽略文本。文本内容也无法被屏幕阅读器识别。

2.css3

优点:简单且与内容分离、css动画不触发layout和paint;(这些属性的修改不会触发layout和paint:backface-visibility、opacity、perspective、perspective-origin、transform);

缺点:有浏览器兼容性问题、安卓手机会出现卡顿、受排版引擎的限制,与整个页面的dom结构息息相关。

3.JQuery

优点:没有兼容性问题

缺点:每一帧,都要进行repaint、recomposite(非常耗时);

总结:在移动端动画效果上,使用css3动画要比jquery动画效率高的多。在安卓手机上表现尤其明显!所以移动端动画以css3动画为优先,jquery只能用来简单处理应用逻辑。css3动画是用来给内容布局加上特效的通用解决方案,但是在性能堪忧的移动浏览器上很可能会受排版性能所限,达不到理想的效果。而对性能有要求的特定场景,比如游戏,用canvas会有很大的提高。

二、css3在移动端出现卡顿问题

css3制作的动画在ios上跑的66的,但是在安卓上有时会出现卡顿现象。不妨从下面几点找找问题。

a、是否导致layout
如果是,尽可能将动画元素absolute或者fixed化以避免影响文档树,以减少重排.

b、是否启用硬件加速
“用到了CSS3动画”和“开启了硬件加速”是两件事情,虽然前者有可能导致后者。
开启硬件加速在webkit中有神奇的万金油:opacity: 1;或者-webkit-backface-visibility: hidden;。

c、是否是有高消耗的属性(css shadow、gradients、background-attachment: fixed等)
有的话,图片也是一种选择。这算得上是用空间换时间的优化了。

d、repaint的面积
如果是,只好缩小动画面积了。这一步的优化有限;

e、尽量使用 transform 生成动画,避免使用 height,width,margin,padding 等;如以下例子1和例子2。

PS:使用 transform,浏览器只需要一次生成这个元素的位图,并在动画开始的时候将它提交给 GPU 去处理 。之后,浏览器不需要再做任何布局、 绘制以及提交位图的操作。从而,浏览器可以充分利用 GPU 的特长去快速地将位图绘制在不同的位置、执行旋转或缩放处理。简而言之,transform 动画由GPU控制,支持硬件加速,并不需要软件方面的渲染

三、动画过程有闪烁(一般出现在动画开始)

解决方法:

.cube {

   -webkit-backface-visibility: hidden;

   -moz-backface-visibility: hidden;

   -ms-backface-visibility: hidden;

   backface-visibility: hidden;

   -webkit-perspective: 1000;

   -moz-perspective: 1000;

   -ms-perspective: 1000;

   perspective: 1000;

   /* Other transform properties here */

}

在webkit内核的浏览器中,另一个行之有效的方法是

.cube {

   -webkit-transform: translate3d(0, 0, 0);

   -moz-transform: translate3d(0, 0, 0);

   -ms-transform: translate3d(0, 0, 0);

   transform: translate3d(0, 0, 0);

  /* Other transform properties here */

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3动画之利用requestAnimationFrame触发重新播放功能
Sep 11 HTML / CSS
css3圆角样式分享自定义按钮样式
Dec 27 HTML / CSS
CSS3实现莲花绽放的动画效果
Nov 06 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
用canvas实现图片滤镜效果附演示
Nov 05 HTML / CSS
详解HTML5中div和section以及article的区别
Jul 14 HTML / CSS
HTML5拖拉上传文件的简单实例
Jan 11 HTML / CSS
HTML5页面中尝试调起APP功能
Sep 12 HTML / CSS
如何避免常见的6种HTML5错误用法
Nov 06 HTML / CSS
Html5定位终极解决方案
Feb 05 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
Mar 21 HTML / CSS
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
Sep 23 HTML / CSS
css3实现圆锥渐变conic-gradient效果
Feb 12 #HTML / CSS
css3翻牌翻数字的示例代码
Feb 07 #HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
Feb 04 #HTML / CSS
CSS3中新增的对文本和字体的设置
Feb 03 #HTML / CSS
CSS3动画特效在活动页中的应用
Jan 21 #HTML / CSS
如何用border-image实现文字气泡边框的示例代码
Jan 21 #HTML / CSS
CSS3实现网站商品展示效果图
Jan 18 #HTML / CSS
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
新版PHP极大的增强功能和性能
2006/10/09 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
php array_walk() 数组函数
2011/07/12 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python入门篇之对象类型
2014/10/17 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python初学者常见错误详解
2019/07/02 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
房地产开发计划书
2014/01/10 职场文书
物业总经理岗位职责
2014/02/28 职场文书
幼儿教师培训感言
2014/03/08 职场文书
cf搞笑广告词
2014/03/14 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
大学生自荐材料范文
2014/12/30 职场文书
家属联谊会致辞
2015/07/31 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP