【发布时间】:2013-12-28 07:37:19
【问题描述】:
在我的关闭函数中,我想在 css 转换完成运行后执行所有 DOM 清理工作。但是可能没有任何过渡正在运行/可能是多阶段的 - (维护样式表不在我的掌控之中)。
我将如何编写类似以下的函数
function close () {
myEl.removeClass('open');
if (animation is running/about to be run) {
// wait for transition to end, then recursively check to see if another
// one has started, wait for that ...
// then
cleanUpDOM();
} else {
cleanUpDOM();
}
}
到目前为止,我的想法是将初始检查包含在 timeout/requestAnimationFrame 中,以便让动画有机会开始,然后检查它是否正在运行。不幸的是,没有transitionstart 事件,我不知道如何检查转换是否已经开始。
edit 推荐 jquery 的答案无关紧要,因为 jquery 动画是 javascript 动画,而不是 CSS 过渡
【问题讨论】:
-
如果您知道动画的属性是什么,您能否通过比较元素当前属性值与它的 css 样式值(又名目标)是什么来确定动画是否正在进行?
-
@milks 一般来说,我不知道正在转换什么,甚至根本不知道正在转换什么。 (实际上,最坏的情况甚至更棘手 - 我什至可能不知道过渡是否在外部元素上,例如在覆盖层中,内部内容区域可能会缩小到一个点,尽管外部覆盖层只是保持黑色......但这种情况是暂时不那么重要)
-
@RobM。不,不是。这个问题是关于过渡开始时的一个事件(不存在),那个问题是关于结束时的一个事件。
-
@CarloCannas 我明白了,感谢您指出这一点。
标签: javascript css events css-transitions