您现在的位置是:网站首页> 编程资料编程资料
css3针对移动端卡顿问题的解决(动画性能优化)CSS 阴影动画优化技巧浅析与CSS3的loading动画加载相关的transition优化
2023-10-18
224人已围观
简介 这篇文章主要介绍了css3针对移动端卡顿问题的解决(动画性能优化),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、使用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 */ } 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- css选择器四大类:基本、组合、属性、伪类详解css3中的伪类before和after常见用法CSS伪类:empty让我眼前一亮(实例代码)浅谈CSS 伪元素&伪类的妙用CSS 伪类修改input选中样式的示例代码css伪类 右下角点击出现 对号角标表示选中的示例代码详解如何使用CSS3中的结构伪类选择器和伪元素选择器解决移动端跳转问题(CSS过渡、target伪类)css3 伪类选择器快速复习小结CSS新增的:where和:is伪类函数是什么
- border-radius IE8兼容处理的方法使用CSS的border-radius属性 设置圆弧一个关于border-radius值设置的问题记录css3 border-radius属性详解浅析border-radius如何兼容IEIE系列不支持CSS的圆角border-radius等属性的解决方案
- css3实现圆锥渐变conic-gradient效果CSS3颜色值RGBA与渐变色使用介绍css实现透明渐变特效的示例代码通过css3背景控制属性+使用颜色过渡实现渐变效果css3实现背景动态渐变效果CSS 实现渐变效果小结( linear-gradient线性渐变 和 radial-gradient径
- 疯狂猜图 一个黄色的圈里面一朵褐色的梅花 答案是什么_手机游戏_游戏攻略_
- 疯狂猜图 橙色瓶身一个闪电 答案是什么_手机游戏_游戏攻略_
- 疯狂猜图 一个红色碗里两个鸡腿 答案是哪个品牌_手机游戏_游戏攻略_
- 疯狂猜图 黑色背景台子上一个人像 答案是什么_手机游戏_游戏攻略_
- 超级冲冲冲怎么玩图文攻略_手机游戏_游戏攻略_
- 全民飞机大战 网络异常怎么办 网络异常解决方法_手机游戏_游戏攻略_
- 神魔联盟 英雄天赋技能详细介绍_手机游戏_游戏攻略_
