【发布时间】:2015-09-15 18:03:23
【问题描述】:
我的 JavaScript 在决定是否等待 animationend 事件时遇到了一些麻烦,我想知道是否存在解决此问题的优雅解决方案。
假设我有一个在页面加载时动画并淡入的 div,然后在稍后我有另一个脚本,将 <img> 标记附加到 div。
我希望在动画完成之后添加<img>,以避免在动画过程中出现任何卡顿,并让它看起来更漂亮。
目前我知道我可以写这样的东西(假设我使用 animate.css):
HTML:
<div class="append-image-here animated fadeIn"></div>
JavaScript:
$(function() {
$('.append-image-here').one([
'webkitAnimationEnd',
'mozAnimationEnd',
'MSAnimationEnd',
'oanimationend',
'animationend'
].join(' '), function() {
$('<img>', { src: '/image.jpg' }).appendTo(this);
});
});
如果脚本在动画完成之前运行并且animationend 事件触发,这很好,但如果脚本恰好在动画结束后运行,<img> 标记将永远不会被创建并且永远不会被附加到 div (例如,如果处理程序设置为超时或超过动画持续时间的类似设置)。
有什么方法可以检测 CSS 动画当前是否正在运行,以便脚本可以决定是否等待 animationend,而不必依赖用户添加的类或数据属性?
(我要求不要依赖类和属性,因为如果我正在使用其他人的动画,我可能无法提前知道类)
任何帮助将不胜感激。
【问题讨论】:
标签: javascript jquery html css animation