css3动画与js动画的一些理解
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动画的一些理解的更多相关文章
- CSS3动画和JS动画的比较
前言 之前有被问到一个问题,css3动画和js动画性能谁更好,为什么.据我的经验,当然觉得css3动画性能更好,至于为什么一时还真答不上来,所以特意查了一下资料总结一波. JS动画 优点: js动画控 ...
- CSS3动画与JS动画的优缺点?
JS动画: 缺点:1.JS在浏览器的主线程中运行,而主线程还有其他的js脚本,样式布局,绘制任务等,对其干扰可能导致线程出现阻塞,从而造成丢帧的情况. 2.JS动画代码复杂度高于CSS3动画. 优点: ...
- css3动画与js动画的区别
css与 js动画 优缺点比较 我们经常面临一个抉择:到底使用JavaScript还是CSS动画,下面做一下对比 JS动画 缺点:(1)JavaScript在浏览器的主线程中运行,而主线程中还有其 ...
- css3 动画 vs js 动画
之前被问到过,css3 动画与 js 动画孰优孰劣,脑袋的第一反应就是性能上肯定 css3 动画会好很多,但别人说不对,我就在想,不对?难道还有别的原因吗?答案是肯定的.先来看看二者实现动画的原理吧. ...
- 使用jquery封装的动画脚本(无动画、css3动画、js动画)
自己封装好的showhide.js 包含无动画.css3动画.js动画 包括:fade(淡入淡出) slideUpDown(上下滑动) slideLeftRight(左右滑动) fadeSlid ...
- Web高性能动画及渲染原理(1)CSS动画和JS动画
目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...
- 高性能Web动画和渲染原理系列(1)——CSS动画和JS动画
[摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...
- css动画与js动画的区别
CSS动画 优点: (1)浏览器可以对动画进行优化. 1. 浏览器使用与 requestAnimationFrame 类似的机制,requestAnimationFrame比起setTimeout ...
- css动画和js动画的差异
代码复杂度,js 动画代码相对复杂一些 动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css动画不能添加事件 动画性能看,js 动画多了一个js 解析的过程,性能不如 css 动 ...
随机推荐
- centos下彻底删除MYSQL 和重新安装MYSQL
在Centos6.3上装了一个Mysql,结果mysql库被我玩丢了(这里面管理了mysql的权限).现在采用先彻底删除,然后重新安装Mysql. 1 删除Mysql yum remove mysq ...
- poj 3691
ac自动机+dp 自动机上的节点来作为状态 dp[i][j]表示长度为i状态为j至少需要转换多少个字符 #include <iostream> #include <cstdio> ...
- JavaScript 高级程序设计(第3版)笔记——chapter5:引用类型
Chapter5 引用类型 本章内容: l 使用对象 l 创建并操作数组 l 理解基本的JavaScript类型 l 使用基本类型和基本包装类型 l 从技术上讲,JavaScript是一门面 ...
- uboot编译: uboot编译配置和编译过程
jz2440: 韦东山Linux视频第1期_裸板_UBoot_文件系统_驱动初步\第09课第2节 u-boot分析之Makefile结构分析.WMV <嵌入式linux完全开发手册> 15 ...
- OpenSSL命令---req
用途: 本指令用来创建和处理PKCS#10格式的证书.它还能够建立自签名证书,做Root CA. 用法: openssl req [-inform PEM|DER] [-outform PEM|DER ...
- ListActivity的注意点
有的时候我们需要集成ListActivity,注意点1,这个时候我们的xml中的<ListView>标签中的id属性不能够随便自己命名,而是要固定为android:id="@id ...
- (Problem 14)Longest Collatz sequence
The following iterative sequence is defined for the set of positive integers: n n/2 (n is even) n 3n ...
- 【分享】如何使用sublime代码片段快速输入PHP头部版本声明
作者:zhanhailiang 日期:2013-06-25 Sublime 菜单栏->Tools→New Snippet→输入以下内容: <snippet> <content& ...
- Android中使用"running services"查看service进程内存
从Android 2.0开始,在Settings中加入了一个新的activity("Running Services" activity),它用于显示当前运行的每个Services ...
- javascript每日一练(十三)——运动实例
一.图片放大缩小 <!doctype html> <html> <head> <meta charset="utf-8"> < ...