http://zencode.in/19.CSS-vs-JS%E5%8A%A8%E7%94%BB%EF%BC%9A%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.html

首先是提到了jq动画慢的原因是以下:

1、jq不能避免layout thrashing,也就是布局颠簸,就是指由于jq中的复杂操作而导致了过多的重绘以及重排。

2、jq比较对内存的消耗比较大,由于触发浏览器的垃圾回收,而过多的垃圾回收会影响动画的渲染效率。

上面的两点,第一点布局颠簸会导致动画在刚开始的时候比较卡顿,而垃圾回收则会影响动画运行的时候卡顿。

对于jq动画效率低的原因我觉得说的很有道理,毕竟jq是一个大家伙,它需要处理的并不仅仅是你这个动画的效果,它还要处理很庞大的功能,所以它在做动画的时候肯定会遗留下一些接口供其它功能去调用,而这也肯定会导致动画这一功能的效率变低。

接下来,文章谈到了css3动画性能好的原因:

1、优化DOM操作

2、通过GPU开启硬件加速提高动画性能

对于第二点我查了之后发现是有问题的,css3的动画并不会自动的开启GPU加速,而是当你的css3动画中使用的3d变形的时候才会开启,所以有时候我们可以通过一些hack手段来开启GPU加速

   -webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);

而GPU虽然说是加速了你的动画性能,但它肯定也是有缺点的,而它的坏处便是会造成更多的内存与功耗,在手机上甚至会损耗电池寿命,所以这里提出了一个问题,不要单纯的为了开启硬件加速而随便乱用,那是不明智的。

所以假设我们不开启GPU加速的话,css3的动画跟jq相比就是减少了DOM操作,减少了重绘重排吗?那么这样说的话对于于我们原生写的js动画的话,只要我们的js动画注意下代码优化以及重绘重排问题,是不是就可以媲美于不开启GPU加速的css3动画呢,当然我也不确定,毕竟没有去查阅资料,只是总结别人的知识。

https://segmentfault.com/q/1010000000645415

然后我有看了这篇seg的文章,为了防止删了先截个图为证吧。

最后再补充点内容,说到了js上的动画性能,就要说下requestAminationFrame,这是一个新的接口,在ie10+以上支持,可以把它说成是setTimeout专门为js动画打造的一个升级版本。它的主要特点如下:

1、requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧。

2、在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的的cpu,gpu和内存使用量。

css3动画与js动画的一些理解的更多相关文章

  1. CSS3动画和JS动画的比较

    前言 之前有被问到一个问题,css3动画和js动画性能谁更好,为什么.据我的经验,当然觉得css3动画性能更好,至于为什么一时还真答不上来,所以特意查了一下资料总结一波. JS动画 优点: js动画控 ...

  2. CSS3动画与JS动画的优缺点?

    JS动画: 缺点:1.JS在浏览器的主线程中运行,而主线程还有其他的js脚本,样式布局,绘制任务等,对其干扰可能导致线程出现阻塞,从而造成丢帧的情况. 2.JS动画代码复杂度高于CSS3动画. 优点: ...

  3. css3动画与js动画的区别

    css与 js动画 优缺点比较   我们经常面临一个抉择:到底使用JavaScript还是CSS动画,下面做一下对比 JS动画 缺点:(1)JavaScript在浏览器的主线程中运行,而主线程中还有其 ...

  4. css3 动画 vs js 动画

    之前被问到过,css3 动画与 js 动画孰优孰劣,脑袋的第一反应就是性能上肯定 css3 动画会好很多,但别人说不对,我就在想,不对?难道还有别的原因吗?答案是肯定的.先来看看二者实现动画的原理吧. ...

  5. 使用jquery封装的动画脚本(无动画、css3动画、js动画)

    自己封装好的showhide.js 包含无动画.css3动画.js动画 包括:fade(淡入淡出)  slideUpDown(上下滑动)  slideLeftRight(左右滑动)  fadeSlid ...

  6. Web高性能动画及渲染原理(1)CSS动画和JS动画

    目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...

  7. 高性能Web动画和渲染原理系列(1)——CSS动画和JS动画

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

  8. css动画与js动画的区别

    CSS动画 优点: (1)浏览器可以对动画进行优化.   1. 浏览器使用与 requestAnimationFrame 类似的机制,requestAnimationFrame比起setTimeout ...

  9. css动画和js动画的差异

    代码复杂度,js 动画代码相对复杂一些 动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css动画不能添加事件 动画性能看,js 动画多了一个js 解析的过程,性能不如 css 动 ...

随机推荐

  1. Java学习之国际化程序

    国际化程序就是把程序的语言根据用户使用的语言显示,各个国家的用户都可以看懂 实现方法就是把输出文字都写在配置文件里,然后根据用户系统语言选择不同的语言输出 package com.gh; import ...

  2. BeanUtils数据封装与表单JavaBean

    一.BeanUtils工具的解释 (1)Apache的Commons组件中.提供了一个实用的工具类BeanUtils,利用它可以方便的将表单数据值填充值Bean中: (2)javax.servlet. ...

  3. 饭卡------HDOJ杭电2546(还是01背包!!!!!!)

    Problem Description 电子科大本部食堂的饭卡有一种非常诡异的设计,即在购买之前推断剩余金额. 假设购买一个商品之前,卡上的剩余金额大于或等于5元,就一定能够购买成功(即使购买后卡上剩 ...

  4. 暂时和永久改动oracle sysdate的默认输出格式

    1.当前会话有效 alter session set NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS'; 2.永久生效 sys用户登入后运行例如以下命令 然后重新启动数据 ...

  5. MYSQLI - mysqli操作数据库

    <?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 ...

  6. 高性能的JavaScript--加载和执行[转]

    写在前面 JavaScript在浏览器中的性能,可认为是开发者所要面对的最重要的可用性的问题,此问题因JavaScript的阻塞特征而复杂,也就是说JavaScript运行时其他的事情不能被浏览器处理 ...

  7. Cesium 获取当前视图范围

    Cesium作为一个开源的WebGlobe解决方案已经很牛了,不过因为开发的资料不多,很多功能不知道怎么实现.下面记录下自己获取Cesium当前场景范围的方法(2维中对应的是extent). exte ...

  8. java基础之junit测试框架

    1.导入junit包, 2.测试方法格式 public void test_*(){} 继承  TestCase  包(keep the bar green to keep the code clea ...

  9. Awesome Delphi

    Awesome Delphi  A curated list of awesome Delphi frameworks, libraries, resources, and shiny things. ...

  10. guozhongCrawler的是一个无须配置、便于二次开发

    guozhongCrawler的是一个无须配置.便于二次开发的爬虫开源框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫.模块化设计完全 面向业务提供接口,功能覆盖整个爬虫的生命周期(链接提取 ...