首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过网络动画API应用的“意志改变”会有预期的效果吗?

通过网络动画API应用的“意志改变”会有预期的效果吗?
EN

Stack Overflow用户
提问于 2020-10-30 20:14:02
回答 2查看 136关注 0票数 1

据谷歌称:

一般的经验法则是,如果动画可能在下一个200 is的.中触发,那么对动画元素进行改变是个好主意。在大多数情况下,对于应用程序当前视图中任何要动画的元素,无论您打算更改哪个属性,都应该启用更改。

因此,我的问题是,在任何属性实际上是动画之前,will-change是否可以通过网络动画API应用,这会产生预期的效果吗?或者,在幕后发生的任何事情的生命周期中,让will-change正常工作是不是太晚了?

似乎通过这个API修改的属性实际上并没有作为CSS属性反映在DevTools中,所以我无法验证这是否真的应用了will-change

这个想法的例子:

代码语言:javascript
复制
this.animation = document.querySelector('#my-element').animate(
  [
    {
      willChange: 'opacity', // will-change applied before any animated property has been changed
      opacity: 'initial',
    },
    {
      willChange: 'opacity',
      opacity: 'initial',
      offset: 0.01, // 1% of the way through the animation
    },
    {
      willChange: 'opacity',
      opacity: 0.5,
      offset: 0.5, // 50% of the way through the animation
    },
    { 
      willChange: 'initial',
      opacity: 'initial'
    },
  ],
  1000
);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-04 22:17:19

看起来,在使用WAAPI (Web动画API)时,will-change实际上是完全不必要的。

如果你的动画有一个延迟,你不需要担心使用意志改变。-- 来源

来自规范的作者之一:

如果你有一个积极的延迟,你不需要改变,因为浏览器将分层在开始的延迟,当动画开始,它将做好准备。

票数 -2
EN

Stack Overflow用户

发布于 2020-11-01 23:14:35

是的,它会达到预期的效果。

动画会影响元素的计算样式,但许多DevTools面板显示元素的指定样式,因此您无法在那里看到它。

另一种方法是简单地给动画添加一个短暂的延迟。在动画的延迟阶段,浏览器需要应用will-change: opacity (或其他正在动画的属性)。(规范参考)

尽管如此,这样做确实没有好处。应用will-change的目的是让浏览器为动画准备内容(例如,将其重新栅格为单独的层),这样动画就可以立即启动。如果您只是正常地启动动画,浏览器将根据需要重新扫描,然后从一开始就开始动画。

使用will-change的好处是,如果您在需要启动要动画的元素之前就知道了,您可以让浏览器提前做好准备。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64615173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档