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 @media的基本用法总结
Sep 10 HTML / CSS
CSS3新增布局之: flex详解
Jun 18 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
May 17 HTML / CSS
html5中地理位置定位api接口开发应用小结
Jan 04 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
Jan 09 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
May 03 HTML / CSS
详解前端HTML5几种存储方式的总结
Dec 27 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
Sep 19 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
Jul 18 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
Aug 01 HTML / CSS
AmazeUI 缩略图的实现示例
Aug 18 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
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
offsetParent 算法分析
2010/04/05 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
angular.bind使用心得
2015/10/26 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python购物车程序简单代码
2018/04/18 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
Python Flask框架扩展操作示例
2019/05/03 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
支部书记四风问题自我剖析材料
2014/09/29 职场文书
教师年度个人总结
2015/02/11 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android