CSS3 动画完成后是否有回调?

IT技术 javascript css frontend
2021-01-20 00:31:12

有没有办法在css3动画的情况下实现回调函数?在 Javascript 动画的情况下,它是可能的,但在 css3 中找不到任何方法。

我可以看到的一种方法是在动画持续时间之后执行回调,但这并不能确保它总是在动画结束后立即被调用。这将取决于浏览器 UI 队列。我想要一个更健壮的方法。有什么线索吗?

2个回答

就在这里。回调是一个事件,因此您必须添加一个事件侦听器来捕获它。这是一个 jQuery 的例子:

$("#sun").bind('oanimationend animationend webkitAnimationEnd', function() { 
   alert("fin") 
});

或者纯js:

element.addEventListener("webkitAnimationEnd", callfunction,false);
element.addEventListener("animationend", callfunction,false);
element.addEventListener("oanimationend", callfunction,false);

现场演示:http : //jsfiddle.net/W3y7h/

transitionend,不是animationend
2021-03-23 00:31:12
@MichaelJones 不,那是针对 css3 过渡的。问题是关于动画的。
2021-04-08 00:31:12
@MartinWittemann IE10 final 现在使用animationend msdn.microsoft.com/en-us/library/ie/...@Husky 代码在 Chrome 和 FF 14 中确实有效,请参阅更新的小提琴jsfiddle.net/W3y7h
2021-04-09 00:31:12
对于 IE10,它是“MSAnimationEnd”(参见msdn.microsoft.com/en-us/ie/hh272902#_CSSAnimations
2021-04-11 00:31:12
stackoverflow.com/questions/9255279/...的副本,有更完整的解决方案
2021-04-12 00:31:12

一个简单的方法是使用jQuery Transit Plugin来处理你的 CSS3 转换/浏览器兼容性例子:

//Pulsing, moving element
$("#element").click( function () {
    $('#element').transition({ opacity: 0, x: '75%' }, function () { $(this).transition({ opacity: 1, x: '0%' }).trigger("click"); });
});

JS小提琴演示

优点是它与 jQuery animate 共享 API 规范,但仍然利用 CSS 动画的硬件渲染平滑度。我们只是用这个替换了几乎所有地方的 jQuery animate。
2021-03-31 00:31:12