Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待css转换_Javascript_Jquery_Css_Css Transitions - Fatal编程技术网

Javascript 等待css转换

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

我正在使用css转换设置一个div的边距。 我需要知道如何才能等待这个效果结束,这样我就可以调用其他函数了。。。 有办法吗?我读了一些关于堆栈溢出的其他帖子,但它们看起来都与我的问题不同。

请尝试回答

每个浏览器中的transition listner事件各不相同,因此下面的函数将找到要使用的侦听器并返回正确的侦听器

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);