我有一个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);
}
});
答案 0 :(得分: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中。然后,当鼠标第一次离开时,它应该下沉。之后,当鼠标再次返回时,它应该返回其原始位置。我认为这将接近这样做。
HTH