Chrome 50 中的 Web Animations 改进

Alex Danilo

Web Animations API 首次在 Chrome 36 中发布,可让您使用 JavaScript 轻松控制浏览器中的动画,并且也正在 Gecko 和 WebKit 中实现。

Chrome 50 引入了一些变更,以提高与其他浏览器的互操作性,并更好地遵循规范。这些变更包括:

  • 取消活动
  • Animation.id
  • pause() 方法的状态更改
  • 弃用了在关键帧中使用带短划线的名称作为键

在 Chrome 51 中,其中一些更改已最终确定:

  • 移除了关键帧中作为键的带短划线的名称

取消活动

Animation 接口包含用于取消动画的方法,该方法的名称很有趣,叫做 cancel()。Chrome 50 会在按规范调用该方法时触发取消事件,这会通过 oncancel 属性(如果已初始化)触发事件处理。

支持 Animation.id

使用 element.animate() 创建动画时,您可以传入多个属性。例如,下面是一个对对象的透明度进行动画处理的示例:

element.animate([ { opacity: 1 }, { opacity: 0 } ], 500);

通过指定 id 属性,系统会在返回的 Animation 对象上设置该属性,这在您有大量 Animation 对象需要处理时,有助于调试内容。以下示例展示了如何为您实例化的动画指定 id

element.animate([{opacity: 1}, {opacity: 0}], {duration: 500, id: "foo"});

pause() 方法的状态变化

pause() 方法用于暂停正在进行的动画。如果您使用 playState 属性检查动画的状态,则应在调用 paused() 方法后将其设置为 paused。在 50 之前的 Chrome 版本中,如果动画尚未开始,playState 属性会指示 idle;但现在,它会反映正确的状态,即 paused

移除了关键帧中作为键的带短划线的名称

为了进一步遵循规范和其他实现,如果关键帧动画中的键使用了带短划线的名称,Chrome 50 会向控制台发送警告。正确的字符串是根据 CSS 属性到 IDL 属性的转换算法使用驼峰式命名法。

例如,CSS 属性 margin-left 要求您传入 marginLeft 作为键。

Chrome 51 完全移除了对带短划线的名称的支持,因此现在是时候根据规范更正所有现有内容的名称了。

摘要

这些更改使 Chrome 对 Web 动画的实现更接近其他浏览器的实现,并且更符合规范,这有助于简化网页内容创作,从而实现更好的互操作性。