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 相关文章推荐
推荐10个CSS3 制作的创意下拉菜单效果
Feb 11 HTML / CSS
实例讲解CSS3中的box-flex弹性盒属性布局
Jun 09 HTML / CSS
CSS3按钮鼠标悬浮实现光圈效果源码
Sep 11 HTML / CSS
详解利用css3的var()实现运行时改变scss的变量值
Mar 02 HTML / CSS
HTML5 实战PHP之Web页面表单设计
Oct 09 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
May 28 HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 HTML / CSS
html5的新玩法——语音搜索
Jan 03 HTML / CSS
使用phonegap播放音频的实现方法
Mar 31 HTML / CSS
前端水印的简单实现代码示例
Dec 02 HTML / CSS
CSS3实现的侧滑菜单
Apr 27 HTML / CSS
HTML5简单实现添加背景音乐的几种方法
May 12 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
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
代码生成器 document.write()
2007/04/15 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Angular路由ui-router配置详解
2018/08/01 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python实现图片九宫格分割
2021/03/07 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
公共场所标语
2014/06/30 职场文书
2014年度思想工作总结
2014/11/27 职场文书
教师工作能力自我评价
2015/03/04 职场文书
职工食堂管理制度
2015/08/06 职场文书
筑梦中国心得体会
2016/01/18 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js