Animation - 表示动画播放器

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

AnimationWeb Animations API 的接口,表示动画播放器,并提供播放控制和动画节点或源的时间轴。

构造函数

Animation()

创建一个新的 Animation 对象实例。

属性

Animation.currentTime

表示动画的当前时间值(以毫秒为单位),无论当前是运行还是暂停。如果动画缺少 timeline,处于非活动状态或尚未播放,则其值为 null

Animation.effect

获取或设置与此动画关联的 AnimationEffectReadOnly。它通常是一个 KeyframeEffect 对象。

Animation.finished 只读

返回此动画的当前完成的 Promise

Animation.id

一个 String,用于获取或设置动画的标识。

Animation.pending 只读

表示动画当前是否正在等待异步操作,例如启动播放或暂停正在运行的动画。

Animation.playState 只读

返回描述动画播放状态的枚举值。

Animation.playbackRate

获取或设置动画的播放速率。

Animation.ready 只读

返回此动画的当前准备好的 Promise

animation.replaceState

返回动画的替换状态。如果已替换动画,则将是 active,如果已调用 Animation.persist(),则将是 persisted

Animation.startTime

获取或设置动画开始播放的预定时间。

Animation.timeline

获取或设置与此动画关联的 timeline

事件处理程序

Animation.oncancel

获取或设置 cancel 事件的事件处理程序。

Animation.onfinish

获取或设置 finish 事件的事件处理程序。

animation.onremove

允许您设置并运行一个事件处理程序,该事件处理程序在删除动画(即处于 active 替换状态)时触发。

方法

Animation.cancel()

清除此动画引起的所有 keyframeEffects 并中止播放。

animation.commitStyles()

即使已删除动画,也将动画的最终样式状态提交给要动画的元素。它将以 style 属性内的属性形式将最终样式状态写入正在动画的元素。

Animation.finish()

根据动画是播放还是反转来设置动画的结尾。

Animation.pause()

暂停播放动画。

animation.persist()

明确保留动画,否则由于浏览器的自动删除填充动画行为而将其删除。

Animation.play()

开始或继续播放动画,或者如果先前已经完成,则重新开始播放动画。

Animation.reverse()

反转播放方向,在动画开始时停止。如果动画完成或未播放,它将从头到尾播放。

Animation.updatePlaybackRate()

设置动画在首次同步播放位置后的速度。

自动删除填充动画

由于可以在同一个元素上触发大量动画,如果它们是不确定的(即,前向填充),则可能会导致动画列表很大,从而造成内存泄漏。因此,现代的浏览器已经实现了 Web 动画规范的一部分,该部分会自动删除覆盖的前向填充动画,除非开发人员明确指定保留它们。

您可以在我们简单的替换不定动画演示中看到这一点。相关的 JavaScript 功能包括:

  • animation.commitStyles() 用于将动画的最终样式状态提交给要动画的元素,即使该动画已被删除也是如此。
  • animation.onremove 用于设置和运行事件处理程序,该事件处理程序在删除动画(即处于 active 替换状态)时触发。
  • animation.persist(),用于明确希望保留动画时使用。
  • animation.replaceState 返回动画的替换状态。如果已删除动画,则将是 active,如果已调用 persist(),则将是 persisted

无障碍问题

动画的闪烁和闪烁可能会对诸如注意力缺陷多动障碍(ADHD)等认知问题的人产生问题。此外,某些类型的运动可能会触发前庭疾病,癫痫和偏头痛,以及局部过敏。

考虑提供一种暂停或禁用动画的机制,以及使用减少运动媒体查询 为那些表示不喜欢动画的用户提供一个更好的体验。

规范

规范 状态 备注
Web Animations
Animation 的定义
工作草案 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持

44

39 — 441

79

48

46 — 48

不支持2613.1
Animation() 构造函数6179

48

46 — 48

不支持48 不支持
cancel3979

48

46 — 48

不支持26 不支持
commitStyles 不支持2 不支持75 不支持 不支持13.1
currentTime3979

48

46 — 48

不支持26 不支持
effect7579

63

484

不支持62 不支持
finish3979

48

46 — 48

不支持26 不支持
finished 不支持 不支持

63

46

不支持 不支持 不支持
id5079

48

46 — 48

不支持37 不支持
oncancel5079

48

46 — 48

不支持37 不支持
onfinish3979

48

46 — 48

不支持26 不支持
onremove 不支持2 不支持75 不支持 不支持13.1
pause3979

48

46 — 48

不支持26 不支持
pending 不支持 不支持595 不支持 不支持 不支持
persist 不支持2 不支持75 不支持 不支持13.1
play3979

48

46 — 48

不支持26 不支持
playbackRate3979

48

46 — 48

不支持26 不支持
playState39679

487

46 — 48

不支持266 不支持
ready 不支持 不支持

63

46

不支持 不支持 不支持
Browsers automatically remove indefinite filling animations. 不支持2 不支持75 不支持 不支持13.1
replaceState 不支持2 不支持75 不支持 不支持13.1
reverse3979

48

46 — 48

不支持26 不支持
startTime3979

48

46 — 48

不支持26 不支持
timeline 不支持2 不支持

759

63

48 — 6310

不支持 不支持13.19
updatePlaybackRate 不支持 不支持60 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持

44

39 — 441

44

39 — 441

未知

48

46 — 48

未知2613.4
Animation() 构造函数6161 未知

48

46 — 48

未知45 不支持
cancel3939 未知

48

46 — 48

未知26 不支持
commitStyles 不支持 不支持2 未知 不支持 未知 不支持13.43
currentTime3939 未知

48

46 — 48

未知26 不支持
effect7575 未知

63

484

未知54 不支持
finish3939 未知

48

46 — 48

未知26 不支持
finished 不支持 不支持 未知

63

46

未知 不支持 不支持
id5050 未知

48

46 — 48

未知37 不支持
oncancel5050 未知

48

46 — 48

未知37 不支持
onfinish3939 未知

48

46 — 48

未知26 不支持
onremove 不支持 不支持2 未知 不支持 未知 不支持13.4
pause3939 未知

48

46 — 48

未知26 不支持
pending 不支持 不支持 未知595 未知 不支持 不支持
persist 不支持 不支持2 未知 不支持 未知 不支持13.4
play3939 未知

48

46 — 48

未知26 不支持
playbackRate3939 未知

48

46 — 48

未知26 不支持
playState396396 未知

487

46 — 48

未知266 不支持
ready 不支持 不支持 未知

63

46

未知 不支持 不支持
Browsers automatically remove indefinite filling animations. 不支持 不支持2 未知 不支持 未知 不支持13.4
replaceState 不支持 不支持2 未知 不支持 未知 不支持13.4
reverse3939 未知

48

46 — 48

未知26 不支持
startTime3939 未知

48

46 — 48

未知26 不支持
timeline 不支持 不支持2 未知

63

48 — 6310

未知 不支持13.49
updatePlaybackRate 不支持 不支持 未知60 未知 不支持 不支持

1. 通过 AnimationPlayer 支持。

2. Currently Chrome Canary only

3. Passes 13/27 web platform tests.

4. Firefox 48 支持此属性,但它是只读的。在 Firefox 51 中可写。

5. 在版本 59 之前,未处理状态由 Animation.playState 返回的 "pending" 值报告的。

6. 在 Chrome 50 / Opera 37 之前,此属性针对尚未开始的动画返回了 idle。从 Chrome 50 / Opera 37 开始,它返回了 paused

7. 在 Firefox 59 之前,此属性针对具有不完整异步操作的动画返回 pending,但从 Firefox 59 开始,这由单独的 Animation.pending 属性表示的。这是对规范的最新更改。

8. 在 Samsung Internet 5.0 / Opera 37 之前,此属性针对尚未开始的动画返回了 idle 。从 Samsung Internet 5.0 / Opera 37 开始,它返回了 paused

9. Currently only the getter is supported

10. Firefox 48 支持此属性,但它是只读的。在 Firefox 49 中变为可写。