フルウィンドウの div にレイアウトされたページがあります。ナビゲーションはナビゲーション ボタンを押すことで実行されます。ユーザーが div の間のスポットにスクロールできないようにするため、コンテナーに overflow:hidden を設定します。その部分はうまく機能します。
HTML:
<body>
<div id="container">
<div class="slide" id="slide1"> <span class="content">page 1</span>
</div>
<div class="slide" id="slide2"> <span class="content">page 2</span>
</div>
<div class="slide" id="slide3"> <span class="content">page 3</span>
</div>
</div>
<div id="navigation">
<ul>
<li><a href="#slide1" class="navbtn1" class="scroll"> </a>
</li>
<li><a href="#slide2" class="navbtn2" class="scroll"> </a>
</li>
<li><a href="#slide3" class="navbtn3" class="scroll"> </a>
</li>
</ul>
</div>
</body>
そして、ここに私が使用しているJavaScriptがあります:
$(document).ready(function(){
// Make navbtn active when page is scrolled down to slide
$('#slide1').waypoint(function(down){
$('#main .active').removeClass('active'); // remove the class from the currently selected
$('#main a.navbtn1').addClass('active'); // add the class to the newly clicked link
});
$('#slide2').waypoint(function(down){
$('#main .active').removeClass('active'); // remove the class from the currently selected
$('#main a.navbtn2').addClass('active'); // add the class to the newly clicked link
});
$('#slide3').waypoint(function(down){
$('#main .active').removeClass('active'); // remove the class from the currently selected
$('#main a.navbtn3').addClass('active'); // add the class to the newly clicked link
});
});
上にスクロールするときに起動するコード ブロックがありますが、このように見えますが、「下」ではなく「上」で、オフセットは -1 です。
問題は、Waypoints jQuery プラグインを使用して #slide がビューポートの上部にあることを検出し、関連する navbtn でアクティブ状態を設定していることです。そして、ウェイポイントはもう発砲していません。overflow:hidden を削除すると機能しますが、ページを読み込んだときに一度だけ起動します。
overflow:hidden を使用すると、ウェイポイントが起動しなくなる理由はありますか?