关于特效性能,canvas、css3、jquery那个更适合手机端?

关于特效性能,canvascss3jquery那个更适合手机端?
最近用dom+jquery做了一个移动端的应用,有6个页,其中有一些诸如齿轮转动,繁星乱跑之类的效果,做好后发现性能真的很差,随后改为css3+canvas的结构,还是不怎么样,最后没办法了,全部推翻重做,使用lufylegend引擎全部采取canvas写完了整个应用,虽然勉强可以用了,但是在一些方面还是不尽如意,比如不好绑定鼠标事件,性能还是有些卡顿。那么,到底该采用什么方法来做这一系列的页面呢?

回复内容:

提一个不同的观点。

用css3动画,也就意味着需要依赖dom,动画都是作用在dom上的。而移动浏览器上的dom性能真是低下,因为这里面涉及到排版引擎,你只能通过减少节点和操作去规避问题,却很难解决。

而canvas动画把整个画布的控制权交给你了,动画性能的上限也由程序员来把握。

有人说canvas动画性能不如css3动画,在排版引擎不成为瓶颈的情况下是成立的,毕竟css3动画更方便,更与内容分离。但不要忘了,css3动画虽然不占用js主线程,却受排版引擎的限制,与整个页面的dom结构息息相关。你想想,假如dom真是万能的话,canvas是用来做啥的呢?事实上,像素操作比dom操作性能要高得多,就连2048这样简单的游戏,用dom来写,在手机上都觉得css3动画帧率不行了,我基本上只敢用dom来做找茬这样的无动画游戏。

总结,dom和css3动画是用来给内容布局加上特效的通用解决方案,在性能堪忧的移动浏览器上很可能会受排版性能所限,达不到理想的效果。而对性能有要求的特定场景,比如游戏,用canvas会有很大的提高,如果觉得事件和坐标管理麻烦的话,可以用一个好一些的游戏引擎。对于大量创建销毁对象的情况,例如打飞机游戏,你可能还需要用到对象池,毕竟js gc的开销也是够呛。不考虑代码质量的话,一般来说css3>canvas>纯js。
1. css3动画是独立与js线程的,js的运算操作不会阻塞css3的动画,所以在系统cpu占用率较高的时候,css3的动画性能要明显高于纯js的动画。
2. 纯js,请注意“”这个字,它的意思是js操作dom,而不是canvas。通过js操作dom实现的动画会引起浏览器的recalculate和layout,在移动设备上还会引起rasterize(栅格化),题主列出的三种动画比较,为什么说纯js的动画性能最低呢,原因就是纯js实现的动画不仅仅考验开发人员的js代码质量,而且随着动画复杂度的提高,被操作的dom数量的提高,相较于css3和canvas来说,纯js实现的动画性能越低。
3. canvas相对于纯js来说dom结构要简单很多,引起的recalculate和layout自然就少了很多,但canvas的动画仍然需要js代码驱动,占用js线程,所以,相较于css3来说,性能上仍然略逊一筹。

PS:虽然理论上是这样,但实际开发中往往还要考虑很多其他因素,比如兼容性(移动端同样不可避免,WTF!),所以很多时候往往采用折中或者综合的方法。css永远好于js
纯js永远好于jq
canvas没什么研究,但本质也是js。操作dom的成本最大,canvas估计比js操作dom强。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2912410.html

(0)
上一篇 2025年3月11日 05:28:14
下一篇 2025年3月11日 05:28:23

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 生日蛋糕的制作方法-不过用的是HTML5+CSS3代码

    “祝你生日快乐,祝你生日快乐……”,过生日有生日歌,生日蛋糕也是必不可少的,这篇文章主要为大家详细介绍了程序员利用纯html5+css3制作的生日蛋糕,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 以一个前端开发的身份绘制一个简单的蛋糕…

    2025年3月11日
    200
  • H5 Canvas API中drawImage(图像进行缩放或裁剪)的使用实例

    这篇文章主要介绍了html5 canvas api中drawimage()方法的使用实例,drawimage()方法主要用来对图像进行缩放或裁剪,文中给出了其坐标及相关参数的用法,需要的朋友可以参考下 drawImage()是一个很关键的方…

    2025年3月11日
    200
  • H5和CSS3组合使用的实例教程

    现在,html5和css3正跃跃欲试的等待大家,下面让我们来看看他们是否真的能让我们的设计提升到下一个高度吧 Web设计师可以使用HTML4和CSS2.1完成一些很酷的东西。我们可以在不使用陈旧的基于table布局的基础上完成文档逻辑结构并…

    编程技术 2025年3月11日
    200
  • H5和CSS3制作一个相册的代码实例

    纯CSS3打造相册效果,感觉还不错,这里与大家分享下,最主要的是没有使用一行js,这才是亮点今天偶然发现电脑里面还有这样的一个例子,感觉效果还不错,不记得啥时候下载的了,也好久没上w3cfuns了,怀念学习前台的日子,给大家分享下。 效果图…

    2025年3月11日
    200
  • h5Canvas绘制五星红旗的实例讲解

    这篇文章主要为大家介绍了html5 canvas绘制五星红旗的相关代码,canvas标签用来定义图形,是图形容器,如何绘制五星红旗,下面小编为大家分享实现代码 Canvas 绘图 API 都没有定义在 元素本身上,而是定义在通过画布的 ge…

    编程技术 2025年3月11日
    200
  • HTMLcanvas矩形阵雨

    htmlcanvas矩形阵雨 在画布上执行 获取制图环境 全屏获取屏幕宽度和屏幕高度 确定每个文字的宽度 以确定列 立即学习“前端免费学习笔记(深入)”; 循环输出 定时器调用 HTML 部分 HTMLcanvas矩形阵雨您的浏览器不支持 …

    编程技术 2025年3月11日
    200
  • 如何绘制路径-线段

    canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的。 立即绘制图形方法仅有两个strokeRect(),fillRect(),虽然strokezText(),fillText()方法也是立即绘制的,但是文本不算是图形。…

    2025年3月11日 编程技术
    200
  • canvas的实例–时钟动画

    平时在公司不忙的时候,就喜欢写一些小效果什么的,一来复习复习,二来可以发现一些问题。   今天在群里看别人发了一手表的图片,卧槽…妥妥的工作好多年的节奏,后来想想还是做好自己的事情算了,想那多干啥,就画了一个手表….…

    编程技术 2025年3月11日
    200
  • Canvas学习系列一:初识canvas

    最近你开始在学习canvas,打算把学习canvas的整个学习过程当中的一些笔记与总结记录下来,如有什么不足之处还请大神们多多指出。   1. canvas介绍 Canvas元素的出现,可以说开启的Web世界绘制动画,图形的大门,其功能非常…

    2025年3月11日
    200
  • 在线演示一个全屏切换效果实例

        在线演示: DEMO DEMO中及以下代码并没有写兼容代码,请使用高级浏览器打开,IE版本对CSS3支持并不太友好,IE11打开没有滚屏效果。 兼容代码前缀: -webkit- -moz- -o- -ms-   直接上代码: pag…

    2025年3月11日
    200

发表回复

登录后才能评论