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 动画技术
Jul 27 HTML / CSS
css3 按钮样式简单可扩展创建
Mar 18 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 HTML / CSS
详解HTML5 canvas绘图基本使用方法
Jan 29 HTML / CSS
HTML5 Canvas标签使用收录
Jul 07 HTML / CSS
整理HTML5中支持的URL编码与字符编码
Feb 23 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 HTML / CSS
关于h5中的fetch方法解读(小结)
Nov 15 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
Jan 12 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
Nov 26 HTML / CSS
纯CSS3实现div按照顺序出入效果
Jul 15 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中iconv函数使用方法
2008/05/24 PHP
php mssql 时间格式问题
2009/01/13 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
wxpython学习笔记(推荐查看)
2014/06/09 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python能否java成为主流语言吗
2020/06/22 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
技术总监岗位职责
2013/12/05 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
2014年质检工作总结
2014/11/26 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书