Javascript 等待css转换
我正在使用css转换设置一个div的边距。 我需要知道如何才能等待这个效果结束,这样我就可以调用其他函数了。。。 有办法吗?我读了一些关于堆栈溢出的其他帖子,但它们看起来都与我的问题不同。请尝试回答 每个浏览器中的transition listner事件各不相同,因此下面的函数将找到要使用的侦听器并返回正确的侦听器Javascript 等待css转换,javascript,jquery,css,css-transitions,Javascript,Jquery,Css,Css Transitions,我正在使用css转换设置一个div的边距。 我需要知道如何才能等待这个效果结束,这样我就可以调用其他函数了。。。 有办法吗?我读了一些关于堆栈溢出的其他帖子,但它们看起来都与我的问题不同。请尝试回答 每个浏览器中的transition listner事件各不相同,因此下面的函数将找到要使用的侦听器并返回正确的侦听器 function whichTransitionEvent(){ var t; var el = document.createElement('fakeelemen
function whichTransitionEvent(){
var t;
var el = document.createElement('fakeelement');
var transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
}
for(t in transitions){
if( el.style[t] !== undefined ){
return transitions[t];
}
}
}
var transitionEnd = whichTransitionEvent();
element.addEventListener(transitionEnd, theFunctionToInvoke, false);
function theFunctionToInvoke(){
// set margin of div here
}
您可以通过两种方式进行转换(假设每个示例中的转换需要1秒):
1.)使用(而不是CSS转换)设置该元素的动画:
2.)在设定的时间段后设置动画:
window.setTimeout(function () {
// do stuff after animation has finished here
}, 1000);
编辑:我理解#2是一个糟糕的解决方案,但我会继续这样做,以防其他人也像我一样思考。$(“#someSelector”).bind(“transitionend WebKittTransitionEnd oTransitionEnd MSTransitionEnd”,function(){…});成功了,谢谢,我不明白。你否决了我的答案,因为我认为这是因为我提供了一个javascript/jQuery解决方案,而你却用javascript和jQuery标记了这个问题。setTimeout是一个糟糕的解决方案。使用动画是一种变通方法,没有必要,因为有合适的解决方案。明白了。不管怎样,我都会保持这个答案,让人们知道这是一个糟糕的解决方案(以防他们和我的想法相同)。用户没有要求jQuery动画的回调函数,而是要求CSS转换的回调函数。非常不同。^我只是说这是一个选项,以防他不完全反对(考虑到他在他的问题上也标记了jQuery)。我还编辑了我留下的答案,以便人们理解我的第二个解决方案是一个糟糕的解决方案,所以我不完全确定你为什么对@HerrSerker如此敌对。我不知道这是一个社区,有人因为显示出可能是一个常见的错误/错误(为了节省其他人的时间,以防他们沿着同一条道路思考-我可以很容易地把这个答案记下来,以避免更多的反对票)。一个漂亮的解决方案。该死!!你用“transitionend”的事件监听器救了我的命
window.setTimeout(function () {
// do stuff after animation has finished here
}, 1000);