問題のアイテムへのリンクは次のとおりです 。 http://www.nychukdesign.com/uploads/dynamic-top-bar-nav-menu.html
すべての HTML、Javascript、および CSS が 1 つの html ファイルに含まれています
機能の説明: これは単純な動的な水平ナビゲーション バーであり、ユーザーがページを下にスクロールすると消えることを意図しており、ユーザーがその領域にマウスを移動するとトリガーがアクティブになり、その領域が下にスライドして再表示され、もう一度消えます。マウスアウト時。ユーザーがスクロールして一番上に戻ると、ナビゲーションはデフォルト (静的) の状態に戻ります...ここで問題が発生します。
問題の説明: ページのトップに戻ると、ナビゲーションがデフォルトの状態に戻り、マウスがこの領域を離れると (再度下にスクロールせずに)、時々 (そして、毎回この問題を再現することはできません)、ナビゲーションが上にスライドして消えます。最初の試行で発生する場合もあれば、数回試行した後に発生する場合もあり、主に Firefox 2.0 で発生しますが、Safari で 1 回か 2 回発生したことがあります。
私の考え: 私はこれに困惑しており、なぜ私が助けを求めているのか. アドバイスをいただければ幸いです。
問題を再現するには 更新:問題を再現する方法を発見しました。上にスクロールして戻る前に、下にスクロールしてメニューをトリガーする必要があります。メニューにマウスを合わせると、何らかの理由でメニューが消えます。
コード:
<script type="text/javascript">
// Use short notation of DOM ready
$(function(){
// Assign variables for the menu, the trigger and the menu position (relative to the document)
var menu = $('#menu'),
menuTrigger = $('#menu-trigger'),
pos = menu.offset();
// Listen for the scroll event
$(window).scroll(function(){
// If we scroll past the position of the menu's height and it has it's default style, then hide menu.
if($(this).scrollTop() > pos.top+menu.height() && menu.hasClass('default')){
menu.fadeOut('fast', function(){
// Remove the default class and replace with fixed class
$(this).removeClass('default').addClass('fixed');
});
// Initiate the trigger to show and hide the menu with the mouse event
$(menuTrigger).removeClass('hidden').addClass('block').mouseenter(function(){
$(menu).slideDown('fast').mouseleave(function(){
$(menu).slideUp('fast');
});
});
// If we scroll back to top and menu has fixed class, fadeIn menu
} else if($(this).scrollTop() <= pos.top && menu.hasClass('fixed')){
menu.fadeIn('fast', function(){
// Hide the trigger
$(menuTrigger).removeClass('block').addClass('hidden');
// Give menu default style
$(this).removeClass('fixed').addClass('default');
});
}
});
});
</script>