Web Animations API (JS动画利器)
原文地址:→传送门
写在前面
之前学习了CSS animation/setTimeout/setInterval/requestAnimationFrame等,这些都可以用在某种场景下的小动画,也可以说是动效。CSS动画君居然强大,但是缺陷也很多啊,有的时候没法满足要求,定时器用在动画中就更不使用了,但是requestAnimationFrame也是个很强大的东西,具体详情移步到window.requestAnimationFrame关于动画,你需要知道的requestAnimationFrame-张鑫旭这几篇文章。下面做的笔记是关于Web Animations API (WAAPI)的,也就是js中的animate。
web animations API
对于waapi,可能大家对css animation更熟悉,下面先看下css animation的用法:
.item1{
animation: rotate 4s inifite ease running;
}
@keyframes rotate{
from{
transform:rotate(0);
}
to{
transform:rotate(360deg);
}
}
或者
@keyframes rotate{
0%{
transform:rotate(0);
background-color:red;
}
40%{
background-color:blue;
}
100%{
transform:rotate(360deg);
background-color:red;
}
}
平时用的较多的是百分比类型的,可以定义多个关键帧。下面来看看waapi版本的:
var ani1 = [
{transform:'rotate(0)',backgroundColor:'red'},
{backgroundColor:'blue',offset:0.4},
{transform:'rotate(360deg)',backgroundColor:'red'}
];
var aniOpt1 = {
duration:4000,
iterations:Infinity,
easing:'ease-in-out'
};
document.querySelector(".item1").animate(ani1,aniOpt1);
Element.animate() 元素调用后会立即执行。跟css3动画有点类似但是有很多小区别,列如:
- css3动画中用的时间单位为s,而wappi中使用的与setTimeout等定时器的单位及写法一致(单位为ms且可省略)
- waapi中关键帧的值传入的是字符串类型,与css3不一样。
- waapi中不再有百分数,而是用offset来设置关键帧的位置。
- css3动画中animation-duration变为duriation,animation-iteration-count则变成iterations,且其无限次的值由字符串'infinite'变成关键字Infinity。等等还有其他一些元素的改变,从单词来讲变得更简洁了。
如果只需设置duration属性,则可采用下面这种更简洁的方式:
document.querySelector(".item1").animate(ani1,4000);
document.animate()可以应用在任何可以使用CSS动画的DOM元素上,下面是几个waapi更强大的控制方法:
play(),pause(),reverse()和playbackRate控制播放
var rotateAni = document.querySelector(".item1").animate(ani1,aniOpt1);
rotateAni.play() //播放
rotateAni.pause() //暂停
注:在动画执行的时候可以在控制台打印下rotateAni,能够看到rotateAni所带的一些属性值及原型上的方法(此时playbackRate的值为1)。

然后发现除了上面这几个之外还有一些其他的属性及方法,再挑几个说一下:
finish() //对于有限次的动画而言,直接停止动画,且跳到动画结束位置
cancel() //取消动画过程,直接跳到动画的开始位置
reverse() //让动画反向执行到动画执行的原点,会将playbackTate从1变成-1
playbackRate属性
reverse()方法可将playbackRate的值改变。如果手动将playbackRate改成一个0-1之间的数值,则可将动画慢下来。设成大于1的值则可使动画加速。
获取动画信息
还有一些方法尚在实验中额,等浏览器可支持后再用起来。。。
wappi的事件监听
onfinish:用于注册完成事件,当调用finish()方法是也可以触发。
oncancel:用于注册取消事件,当调用cancel()方法是也可以触发。
rotateAni.onfinish = function(){
doSomething();
}
rotateAni.oncancel = function(){
doSomething();
}
浏览器支持度
一图胜前言can i use

小结
- 由于目前浏览器支持度不算高,所以呢还是要慎用。
- 在现代浏览器中,使用wappi可以做出很酷的动画,可以多试试。
- 本文也只算是学习笔记,所以欢迎大佬们指点额~
参考资料
Web Animations API (JS动画利器)的更多相关文章
- 【翻译】CSS Animations VS the Web Animations API:案例学习
原文地址:CSS Animations vs the Web Animations API: A Case Study May 03, 2017 css, javascript 上周我写了我如何使用C ...
- Web Animations API & SVG & requestAnimationFrame
Web Animations API WWAPI https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API https:/ ...
- 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 博客园 ...
- Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
(从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...
- JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能
摘要: 理解浏览器渲染. 原文:JavaScript是如何工作的: CSS 和 JS 动画底层原理及如何优化它们的性能 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是专门探索 J ...
- 【Web Audio API】 — 那些年的 web audio
转 TAT.Jdo:[Web Audio API] - 那些年的 web audio 这主题主要是早期对 web audio api的一些尝试,这里整理一下以便以后翻阅,如有错误,诚请指正. 在这之前 ...
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是c ...
- 【HTML5】Web Audio API打造超炫的音乐可视化效果
HTML5真是太多炫酷的东西了,其中Web Audio API算一个,琢磨着弄了个音乐可视化的demo,先上效果图: 项目演示:别说话,点我! 源码已经挂到github上了,有兴趣的同学也可以去st ...
随机推荐
- ASP.NET MVC 重写RazorViewEngine实现多主题切换
在ASP.NET MVC中来实现主题的切换一般有两种方式,一种是通过切换皮肤的css和js引用,一种就是通过重写试图引擎.通过重写试图引擎的方式更加灵活,因为我不仅可以在不同主题下面布局和样式不一样, ...
- linux 下tomcat的安装
写在前面: 由于项目使用jdk1.6开发,所以对应服务器应安装jdk1.6和tomcat6 --- 1.环境变量的配置: 打开/etc/bashrc配置环境变量 JAVA_HOME=/usr/apps ...
- Linux常用操作命令(三)
查看linux日志某几行 用逆序显示命令tail查看 命令格式:tail [ -r ] [ -n Number ] [ File ] [一]从第3000行开始,显示1000行.即显示3000~39 ...
- LVS工作模式与调度算法
LVS三种工作模式.十种调度算法介绍 工作模式介绍: 1.Virtual server via NAT(VS-NAT) 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配 ...
- CSS学习笔记08 浮动
从CSS学习笔记05 display属性一文中,我们知道div是块元素,会独占一行,即使div的宽度很小,像下面这样 应用display属性的inline属性可以让div与div共享一行,除了这种方法 ...
- eclipse 导入git库 Android工程
1. 导入git库 1.1 从git库 clone 代码 在file->import中选中Git 目录下的Projects from Git 点击Next 选择 URL 点击Next 输入URL ...
- 利用MUI滑动进行利息计算(移动端APP显示)
在开发移动端的应用时,会用到很多的手势操作,比如滑动.长按等,为了方便开放者快速集成这些手势,mui内置了常用的手势事件,其中滑动应用是比较常见的应用操作,本篇文章将讲述如何利用滑动改变对应值进行计算 ...
- DOM编程从入门到忘记
文档对象模型(Document Object Model,DOM)是使用 W3C 定义的 API (Application Program Interface) 来操作 HTML 文档 (此处不局限于 ...
- APP测试相关点归纳
APP测试相关点归纳 1.1测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为一两周,根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前需确认项目排期. 1.2测试资源 ...
- Java 9 揭秘(8. JDK 9重大改变)
Tips 做一个终身学习的人. 在本章,主要介绍以下内容: 新的JDK版本控制方案是什么 如何使用Runtime.Version类解析JDK版本字符串 JDK JRE 9的新目录布局是什么 JDK 9 ...