0

我有一个 div 容器,它贴在页面底部。当鼠标移出 div 时,我希望 div 在 3 秒后下沉。当鼠标移到 div 上时,我希望 div 上升到原来的位置。问题是当鼠标快速移出和移出 div 时,div 会不断向上移动到页面顶部。

   var timer = null;
   var moving_distance = $("#scroller").height()-($(window).height()-$("#slideshow").height());
   $("#scroller").mouseenter(function(event){

    if(timer)
    {
     clearTimeout(timer);

         $("#scroller").animate({top:'-='+moving_distance},1000);

    }

}).mouseleave(function(event){

    if(!timer){

    timer = setTimeout(function(){

        $("#scroller").animate({top:'+='+moving_distance},1000);
    },3000);
    }
}); 
4

1 回答 1

0

我已经成功地在我想要的动画前面堆叠了一个空动画,而不是使用 setTimeout。

例如,

 var moving_distance = $("#scroller").height()-($(window).height()-$("#slideshow").height()); 
 var firstEnter = true;
 $("#scroller").mouseenter(function(event){ 
    if (firstEnter)
        firstEnter = false;
    else {
        $("#scroller").stop();
        $("#scroller").animate({top:'+=0', 3000);
        $('#scroller').animate({top:'-='+$('#scroller').top()), 1000);
    }
}).mouseleave(function(event){ 
    $('#scroller').stop();
    $("#scroller").animate({top:'+=0', 3000);
    $('#scroller').animate({top:'+='+moving_distance), 1000);
});  

我从您的描述中猜测您希望 div 保持静止,直到鼠标移动到 div 中。然后当鼠标第一次离开时它应该下沉。之后,当鼠标再次回来时,它应该回到原来的位置。我认为这将接近做到这一点。

高温高压

于 2012-02-15T21:05:13.473 回答