2012-01-27 17 views
0

マウスを移動するまで、特定のセクションを非表示にしたいサイトを構築しています。マウスは動いている間は見えていますが、数秒間まだ静止していると再び隠れます。私はレディ状態で、サイト上のjQueryを使用していマウスの移動時に要素を表示/非表示にする

私が持っている:

var hide = setTimeout(function() { 
    hideNav(); 
}, 2000); 

$('body').mousemove(function() { 
    clearTimeout(hide); 
    var hide = setTimeout(function() { 
     hideNav(); 
    }, 2000); 
    showNav(); 
}); 

をし、タイムアウトを除き、/非表示コンテンツ作品の

function hideNav() { 
    $('#primary').fadeOut(1000); 
    var lightbox = $('#lightbox'); 
    if (lightbox.length) { 
    lightbox.fadeOut(1000); 
    } 
} 

function showNav() { 
    $('#primary').fadeIn(1000); 
    var lightbox = $('#lightbox'); 
    if (lightbox.length) { 
    lightbox.fadeIn(1000); 
    } 
} 

この種を示し、機能要素を隠すための機能は、マウスが動いたときにその機能を表示して、ちらつきがたくさん出るようになります。

EDITは:マウスの動きはどこかのページに、だけでなく、表示/非表示される要素の上にマウスを移動するときのためにする必要があります。

ご協力いただければ幸いです。

おかげ

+0

jsFiddleに配置された例は、本当に膨らみます。 –

答えて

2

そのあなたのマウスを動かすとフェードアウトの1秒で、それはフェードアウトのアニメーションを停止し、戻ってフェードインする必要がある場合$.stophttp://api.jquery.com/stop/

を使用してみてください。

function hideNav() { 
$('#primary').stop().fadeOut(1000); 
var lightbox = $('#lightbox'); 
if (lightbox.length) { 
    lightbox.fadeOut(1000); 
} 
} 

function showNav() { 
$('#primary').stop().fadeIn(1000); 
var lightbox = $('#lightbox'); 
if (lightbox.length) { 
    lightbox.fadeIn(1000); 
} 
} 

また、mousemove機能のからvarを削除します。 hideがグローバル変数の場合は、mousemove内で再利用するだけです(再宣言する必要はありません)。

+1

私は少し微調整し、showNav関数だけに停止を追加するか、お互いに競合する必要がありました。 タイムアウトをクリアし、イベントの伝播を停止した#primaryと#lightboxの両方にホバーイベントを追加して、マウスがそれらの上にあるときに見えるようにしました –

関連する問題