您现在的位置是:网站首页> 编程资料编程资料
css3针对移动端卡顿问题的解决(动画性能优化)CSS 阴影动画优化技巧浅析与CSS3的loading动画加载相关的transition优化
2021-09-03
968人已围观
简介 这篇文章主要介绍了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径
- css定位position引发的层级关系问题详解CSS之定位布局(position,定位布局技巧)详解css粘性定位position:sticky问题采坑CSS position属性和实例应用演示CSS的position定位和float浮动详解css关于position属性的用法详解(绝对定位和相对定位的混淆)css position fixed 左右双定位的实现代码
- css中overflow:hidden失效问题的解决方法深入理解CSS overflow:hidden——溢出,坍塌,清除浮动css中position:relative和overflow:hidden之间的问题CSS--overflow:hidden在项目实例中使用心得分享IE8 css overflow:hidden不起作用CSS教程:CSS让网页文字自动隐藏
- css3 transform导致子元素固定定位变成绝对定位的方法CSS之定位布局(position,定位布局技巧)关于CSS中定位的小结css定位position引发的层级关系问题详解深入学习CSS中如何使用定位(小结)详解css粘性定位position:sticky问题采坑CSS中的四种定位区别详解
- css实现多张图片横向居中显示的方法CSS3实现水平居中、垂直居中、水平垂直居中的实例代码手把手教你CSS水平、垂直居中的10种方式(小结)css 不定宽高的元素居中布局解决方案CSS自适应布局实现子元素项目整体居中,内部项目左对齐css常用元素水平垂直居中方案
- CSS3颜色值RGBA与渐变色使用介绍CSS3解决移动页面上点击链接触发色块的问题 CSS3中使用RGBa来调节透明度的教程CSS3中使用RGBA设置透明度的示例CSS3 透明色 RGBA使用介绍CSS3 rgb and rgba(透明色)的使用详解
- CSS 实现蜂巢/六边形图集的示例代码css3实现六边形边框的实例代码css画正六边形的两种方法css实现六边形图片的示例代码CSS实现图片背景填充的六边形的示例代码CSS3绘制六边形的简单实现纯css绘制蜂巢六边形效果纯css实现的六边形(蜂窝)导航效果(支持hover/兼容浏览器)
- js判断并告知支持css属性(值)的 情况分析CSS 有序或者无序列表的前面的标记 list-style-type 属性的实现css浮动 float属性详解css选择器四大类:基本、组合、属性、伪类详解CSS3新增的背景属性
