javascript - 为什么 onanimationend 在我的代码中不起作用,但 addEventListener ("animationend") 可以?

标签 javascript css css-animations

我试图在元素的淡入淡出动画结束后删除它。将监听器添加到 animationend 事件可以正常工作,但将处理程序分配给 .onanimationend 却不行——当动画结束时该函数不会触发。为什么 on- 处理程序不起作用?

我在 FF 48 上运行代码,但问题也出现在 Chrome 71 上。

const post = document.querySelector('.post');
const hideButton = post.children[0];

// When hide button is clicked, run fade animation.
hideButton.onclick = function() {
  post.style.animationPlayState = "running";
};

// This function runs
post.addEventListener("animationend", function() {
  console.log('animationend listener running');
  // this.remove();
});

// This function doesn't run
post.onanimationend = function() {
  console.log('onanimationend handler running');
  // this.remove();
};
@keyframes hide {
  0% {
    opacity: 1;
    height: 100%;
    margin: 10px 0;
    padding: 15px;
  }
  75% {
    opacity: 0;
    height: 100%;
    margin: 10px 0;
    padding: 15px;
  }
  100% {
    opacity: 0;
    height: 0px;
    margin: 0px;
    padding: 0px;
  }
}

.post {
  background-color: #80ff00;
  margin: 10px 0;
  padding: 15px;
  animation-name: hide;
  animation-duration: 2s;
  animation-fill-mode: forwards;
  animation-play-state: paused;
}
<div class="post">
  Post
  <button class="hide">
    Hide
  </button>
</div>

最佳答案

检查您的浏览器版本并与 https://caniuse.com/#search=animationend

Firefox v48.0.0 – Java Broker 36 mins ago

您的浏览器与animationend不兼容

关于javascript - 为什么 onanimationend 在我的代码中不起作用,但 addEventListener ("animationend") 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54398450/

相关文章:

javascript - 如何使用JavaScript获取dynamic cm中的帐户名?

javascript - 在 slider 图像前面淡入图像或(信息文本)?

javascript - 检查左键或右键单击的指针事件方法

javascript - 如何使用 AnythingSlider(jquery 插件)制作更大的幻灯片?

html - 在 Firebug 中显示当前事件的媒体查询规则

javascript - 制作兼容 iOS 的 Javascript 键盘的想法

jquery - 切换类以重新触发动画

html - 翻转卡片,背面卡片上的图像在第一次翻转时出现缓慢

css - 如何对字母 X 的 SVG 进行动画处理,使其看起来就像正在绘制一样?

javascript - IE 10 keyup/keydown 不使用 jQuery 1.10.1 触发