在 HTML DOM 中,Element 元素节点类型可以使用 getAnimations 方法获取到元素当前绑定的所有动画,无论是 CSS 动画、CSS 过渡还是 JavaScript 直接交互的动画都可以获取到,这些动画对象具有相同的 playState
只读属性,这个属性就指示了当前动画对象的播放状态,这个属性的可用值如下:
idle
动画的当前时间无法决断,并且没有待处理的任务。
running
动画正在播放中。
paused
动画已被暂停,并且动画对象的 currentTime 属性没有在更新。
finished
动画已到达了它其中的一个边界,并且动画对象的 currentTime 属性没有在更新。
综上所述,我们可以判断动画对象的 playState
属性值是否为 running
来得知元素是否正在动画中,比如下面的代码:
var anims = Element.getAnimations()
if (anims.some((anim) => { return anim.playState == "running" })) {
console.info("正在动画中")
}
因为元素可能不只绑定了一个动画对象,所以遍历动画集合,只要其中有一个动画正在播放,就表示该元素正在动画中。