メイン コンテンツを含む div コンテナーを含む Web ページがあり、その中にマウスをコンテナーに置くと表示される div があります。これは私が試したコードです:
var running=0;
var running2=0;
$('div.container').mouseenter(function()
{
if (running==0)
{
running=1;
$('div.rightcontainer').css("margin-right",-350)
.animate({marginRight:0}, 750, function(){running=0;});
}
}
);
$('div.container').mouseleave(function() {
if (running2==0) {
running2=1;
$('div.rightcontainer').css("margin-right",0)
.animate({marginRight:-350}, 750, function(){running2=0;});
}
});
このコードは機能します:
$('div.container').mouseenter(function() {
console.log('trigger');
$("div.rightcontainer")
.css("visibility","visible")
.css("margin-right",-$("div.rightcontainer").width())
.animate({
marginRight:0
}, 1200);
});
$('div.container').mouseleave(function() {
console.log('leave');
$("div.rightcontainer")
.css("visibility","visible")
.css("margin-right", "320")
.animate({
marginRight:-350
}, 1200);
});
しかし、問題は、マウスが複数回入ると、オブジェクトが入ったり出たりし続けることです。
編集:
.one() は一度だけ実行します。つまり、すべての開始と終了を積み重ねて、何度もアニメーションを実行するということです。
.stop() ソリューションの方が優れていましたが、アニメーションはどこからでも最後までジャンプしました。マウスがアニメーションの途中でコンテナを離れた場合、アニメーションがその場所で停止し、逆方向にアニメーション化する方法がある場合は?
これは、簡略化されたバージョンの Web サイトを含む JSFiddle です。コンテナは、ナビゲーションバーの下にあるものです。http://jsfiddle.net/yEzXp/