【问题标题】:Animation complete not called JavaScript DOM动画完成不称为 JavaScript DOM
【发布时间】:2019-12-07 21:43:18
【问题描述】:

我正在尝试使用完成功能为图像制作动画。
动画效果很好,但没有调用完整的属性。
我试着环顾四周,没有发现任何结果表明我所做的事情是错误的。
我试过ChromeFirefox
我正在使用下面的代码

document.getElementById("myImageId").animate([{
      transform: 'translateY(0px)'
   },
   {
      transform: 'translateY(-300px)'
   }
], {
   duration: 300,
   complete: function () {
      alert('end ani')
   }
});

【问题讨论】:

    标签: javascript animation dom


    【解决方案1】:

    Element.animate() 返回一个Animation 对象,您可以将finish 的事件处理程序附加到该对象:

    var animation = document.querySelector('#myImageId').animate([{
        transform: 'translateY(0px)'
      },
      {
        transform: 'translateY(-300px)'
      }
    ], {
      duration: 300,
      delay: 300,
      fill: 'forwards',
    });
    
    animation.addEventListener('finish', () => alert('end ani'));
    <div id="myImageId"><img src="https://picsum.photos/200"></div>

    另一个目前仅受 FireFox 支持的选项是 Animation.finished 承诺:

    var animation = document.querySelector('#myImageId').animate([{
        transform: 'translateY(0px)'
      },
      {
        transform: 'translateY(-300px)'
      }
    ], {
      duration: 300,
      delay: 300,
      fill: 'forwards',
    });
    
    animation.finished.then(() => alert('end ani'));
    <div id="myImageId"><img src="https://picsum.photos/200"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2014-08-14
      • 2018-03-29
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      相关资源
      最近更新 更多