2017-02-17 9 views
0

私は、ページをスクロールダウンするとフェードアウトし、ページがスクロールアップしてもうまくいく固定されたナビゲーションバーを持っています。それはそれを行う時間がなく、カウントを保存しているように見え、その後、その時間量だけ点滅し続けます。どうすればこれをやめることができますか?この固定ナビゲーション停止を点滅させるにはどうすればよいですか?

<script type="text/javascript"> 
var previousScroll = 0, 
headerOrgOffset = $('#centre').height(); 

$('header').height($('#centre').height()); 

$(window).scroll(function() { 
var currentScroll = $(this).scrollTop(); 
if (currentScroll > headerOrgOffset) { 
    if (currentScroll > previousScroll) { 
     $('header').fadeOut(); 
    } else { 
     $('header').fadeIn(); 
    } 
} else { 
     $('header').fadeIn(); 
} 
previousScroll = currentScroll; 
}); 
</script> 

<style type="css/text"> 
header { 
width:100%; 
height:86px; 
background:#ffffff; 
top:0; 
left:0; 
right:0; 
position:fixed; 
z-index: 1000; 
display:block; 
border-bottom: solid 1px #eee; 
} 

#centre { 
width:960px; 
height:86px; 
margin-left:auto; 
margin-right:auto; 
background:#ffffff; 
} 
</style> 

<header> 
    <div id="centre">Nav</div> 
</header> 
+0

上記のコードで問題を再現できないようです。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 JSFiddleやCodePenのようなコードフィーリングも本当に役に立ちます:) –

答えて

1

それはデバウンスと呼ばれる概念があります:

は、ここに私のコードです。特定の時間枠内の重複アクションは基本的に無視されます。次のコードでは、doSomethingメソッドは最後のスクロールイベントの500ms後にのみ呼び出されます。

function doSomething() { 
    // do some really cool stuff 
} 

var timer; 
$(window).scroll(function() { 
    clearTimeout(timer); 
    timer = setTimeout(doSomething, 500); 
}); 
+0

こんにちはRyan、あなたの答えをありがとう。また、ページの開始時にナビゲーションがすぐに消えるのを防ぐ方法も知っていますか?だから150pxのようなものに達すると、それは消えますか? – Ash

+0

この問題とは別に、あなた自身でそれを使いこなす必要があります。あなたが問題を抱えている場合は、JSfiddleを作成して新しい質問を開きます。 –

関連する問題