Web动画API教程: 总结

转载自http://www.w3cplus.com/css3/web-animations-api-tutorial-animations-conclusion.html

我们前面已经讲解了很多内容,而且希望能够解决Web动画API到底是什么的问题。在总结这个系列时,我们将回顾一下我们已经讨论的内容,然后再看一下有哪些内容还没有实现的。

为什么这么费心API呢?

第一篇的导论中就已经讨论了API是如何应运而生,为了将CSS、JS、SVG创建动画的方法糅合到一起,提取它们的优点,提供一种统一的方法。这意味着,例如,JavaScript可以拥有CSS已有多年的硬件加速的优点,而且你也不需要纠结于CSS的声明。这个API不是要取代像GSAP这样的库,只是在浏览器层面提供更多选择。

FirefoxChrome已经都开始在实现,Edge也将它放到了待办事项中。polyfill允许我们现在就将它作为定型的规范来使用它。

动画基础

创建基本动画,使用的是和CSS类似的结构,通过提供关键帧和时间函数来实现。

var player = document.getElementById(‘toAnimate‘).animate([
    { transform: ‘scale(1)‘, opacity: 1, offset: 0 },
    { transform: ‘scale(.6)‘, opacity: .6, offset: 1 }
  ], {
    duration: 700,
  });

时间轴控制这一块,很明显目前在CSS中并不存在。通过playState属性读取动画的状态,通过如play()pause()、和finish()这样的方法来改变动画的状态。我们还可以通过读/写playbackRate属性来改变播放速度,变快变慢都可以。currentTime可以也可以读/写,我们还可以通过onfinish在动画结束时设置一个回调。

多动画和分组

Web动画API允许在一个元素上添加多个动画,分别创建单独的动画player。document上的默认时间轴可以让我们通过getAnimations()方法获取所有动画。动画可以使用GroupEffects分组然后一起播放,或者使用SequenceEffects一个接一个播放,在Part 4中已讲解(polyfill中有提供,但第一版规范中没有)。

运动路径以及将来的发展

沿路径动画,在这个系列教程中,讲解过CSS中可以看到它初始实现的效果,但是还有很多内容没有实现。

关键帧间距

目前的实现方案是使用默认间距,如果没有在关键帧中设置offset,也就意味着它们是均匀分布的(例如,三个帧的情况就是0.51的偏移)。规范还定义了一种基于属性一步一步推进的动画,这样它就有了不断改变的速度。规范中Spacing Keyframes这一块做了详细的讲解。

Promises

规范已经发展到引入一个ready Promise,而且这个Promise每次在动画取消或进入pending状态(通常是切换成“running”或“pause”状态之前发生)时都会被新的取代。另外,这个系列中我们也讨论了不使用onfinish回调,我们将使用finished Promise来在一个动画结束之后跑一个函数。

我们接下来会继续讨论Web动画API

大家已经开始渐渐地来讨论这个API,我希望热度能够持续。规范的内容、浏览器实现、以及polyfill都已经出现了有一段时间了,它们也已经准备好接受大家的审查了。

有时候CSS是非常棒的,有时候requestAnimationFrame也不错,有时候使用库是最好的解决方案。关键在于弄清楚什么时候使用哪个,这个API提供了相当多之前没有提供的东西,所以大家好好玩吧~

时间: 2024-12-11 15:09:24

Web动画API教程: 总结的相关文章

Web动画API教程2:AnimationPlayer和Timeline

本文转载: Web动画API教程2:AnimationPlayer和Timeline

Web动画API教程4:GroupEffects 及 SequenceEffects

转载自http://www.w3cplus.com/css3/web-animations-api-tutorial-part-4-groupEffects-and-sequenceEffects.html 我们来继续我们关于Web动画API中多动画的探讨,讨论一下现在polyfill中提供的分组和序列功能. KeyframeEffects KeyframeEffect传入三个参数:要添加动画的元素.关键帧数组.时间函数timing选项.这些参数都是我们之前使用element.animate()

Web动画API教程3:多个动画

转载自http://www.w3cplus.com/css3/web-animations-api-tutorial-part-3-multiple-animations.html 在关于AnimationPlayer和时间轴的讨论之后,我们来看看多动画和多player吧. 给一个元素添加多个动画 在这个示例中,每个矩形被应用了三个动画(其中包括变换.透明度和颜色).你可以给一个元素多次调用animate(),类似CSS中的多动画. 使用的CSS: #toAnimate { animation:

Web动画API教程1:创建基本动画

转载自http://www.w3cplus.com/css3/web-animations-api-tutorial-part-1-creating-a-basic-animation.html 我们已经初步了解了统一web动画API的内容,但是我们还没有真正去对规范的细节进行探讨,所以现在开始吧. WAAPI为你提供了比你用于CSS动画更多的控件,但是在了解它们之前,我们先打一下基础:如何使用这个API创建一个基本的动画? 创建一个关键帧动画 如果你对CSS Transition和animat

Web动画API教程5:可爱的运动路径(Motion Path)

转载自http://www.w3cplus.com/css3/web-animations-api-tutorial-part-5-the-loveable-motion-path.html 终于.沿路径的动画,不再是SVG的专利! Motion Path:规范的当前方向 随着API规范已经制定好并且通过,运动路径motion path也先后出现了不同的形式.单方向最初看起来可能是Effect的形式(如上一篇中讨论的GroupEffect),但随后Motion Path作为一个CSS模块慢慢的一

Web动画:学习使用API

转载自http://www.w3cplus.com/animation/web-animations-learning-to-love-the-api.html 如果你使用过SVG,你应该知道可以使用SMIL给SVG添加动画.CSS Transitions和keyframes动画都可以操作CSS属性来添加动画.requestAnimationFrame() 使得浏览器可以在下一帧执行之前,请求一个动作. 但是每一中动画技术都不是完美的,各自有各自的问题. 现代浏览器正在逐步淘汰SMIL.Chro

【ASP.NET Web API教程】6.1 媒体格式化器

http://www.cnblogs.com/r01cn/archive/2013/05/17/3083400.html 6.1 Media Formatters6.1 媒体格式化器 本文引自:http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters By Mike Wasson|March 8, 2012作者:Mike Wasson|日期:2012-3-8 This tutorial shows

Yii2框架RESTful API教程(二) - 格式化响应,授权认证和速率限制

之前写过一篇Yii2框架RESTful API教程(一) - 快速入门,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下: web ├─ common │ └─ models │ └ User.php └─ frontend ├─ config │ └ main.php └─ controllers └ BookController.php 二.格式化响应 Yii2 RESTful支持JSON和XML格式,如果想指定

Yii2框架RESTful API教程(一) - 快速入门

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则