• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 关于特效性能,canvas、css3、jquery那个更适合手机端?

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含canvas,jquery,lufylegend,css3,dom等相关知识,匿名希望在学习及工作中可以帮助到您
关于特效性能,canvas、css3、jquery那个更适合手机端?
最近用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强。

您可能想查找下面的文章:

  • canvas与html5实现视频截图功能示例
  • 详解html5 canvas常用api总结(二)--绘图API
  • HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
  • 详解使用HTML5 Canvas创建动态粒子网格动画
  • 解决canvas转base64/jpeg时透明区域变成黑色背景的方法
  • 用html5的canvas和JavaScript创建一个绘图程序的简单实例
  • HTML5 canvas基本绘图之图形组合
  • HTML5 canvas基本绘图之文字渲染
  • HTML5 canvas基本绘图之绘制曲线
  • HTML5 canvas基本绘图之图形变换

相关文章

  • 2017-08-06Html5 audio标签样式的修改
  • 2018-12-03HTML5每日一练之meter标签的应用
  • 2018-12-03详解H5新属性audio音频和video视频的控制代码实例
  • 2017-08-06HTML5+CSS3绘制锯齿状的矩形
  • 2017-08-06详解如何用HTML5 Canvas API控制图片的缩放变换
  • 2018-12-03Web 前端 IDE 用的都是什么啊?
  • 2018-12-03H5混合开发app如何升级
  • 2018-12-03iH5和MAKA哪个好?
  • 2018-12-03H5响应式网站的详细介绍
  • 2018-12-03为什么有些网站在用鼠标拖动选取文字或其他内容的时候,背景色不是默认的颜色?如何进行自定义?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5 CANVAS:绘制阴影和填充模式
    • 分享一个利用HTML5制作的海浪效果代码
    • 如何用canvas绘制矩形?canvas画矩形的两种方法介绍
    • 仿酷狗html5手机音乐播放器主要部分代码_html5教程技巧
    • HTML5实现页面切换激活的PageVisibility API使用初探_html5教程技巧
    • 怎样自定义并使用websocket子协议?
    • html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
    • 关于15个最佳的响应式HTML5网站模板图文详解
    • HTML5移动端开发中的Viewport标签及相关CSS用法解析
    • Cordova 如何实现所有的h5html 来自于远程服务器呢?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有