2016-04-06 11 views
0

スクロールには静的サイドバーがありますが、フッタに重なると重なってしまいます。このフッタへのスクロールを止める方法はありますか?私はこれが単純な概念かもしれないと理解していますが、私はJQueryでScrollイベントを扱う経験はほとんどありません。フッターで静的サイドバーを停止するには

下記のコードとコードページをご覧ください。

<div id="main"> 
    <div class="spacing">CONTENT HERE TO SHOW HOW THE SCROLL WILL WORK. PLEASE SCROLL DOWN</div> 
    <div class="container"> 
     <div id="sidebar"> 
     <div id="nav-anchor"></div> 
     <nav> 
      <ul> 
       <li><a href="#blue">Blue</a></li> 
       <li><a href="#green">Green</a></li> 
       <li><a href="#red">Red</a></li> 
       <li><a href="#yellow">Yellow</a></li> 
       <li><a href="#purple">Purple</a></li> 
      </ul> 
     </nav> 
     </div> 
     <!-- /sidebar --> 
     <div id="content"> 
     <section id="blue"> 
      ... 
     </section> 
     <section id="green"> 
      ... 
     </section> 
     <section id="red"> 
      ... 
     </section> 
     <section id="yellow"> 
      ... 
     </section> 
     <section id="purple"> 
      ...  
     </section> 
     </div> 
     <!-- /#content --> 
    </div> 
    <!-- /.container --> 
    <footer> 
     <p>Footer here</p> 
    </footer> 
</div> 
<!-- /#main --> 


$(document).ready(function(){ 

    $(window).scroll(function(){ 
     var window_top = $(window).scrollTop() + 12; 
     var div_top = $('#nav-anchor').offset().top; 
      if (window_top > div_top) { 
       $('nav').addClass('stick'); 
      } else { 
       $('nav').removeClass('stick'); 
      } 
    }); 


}); 

http://codepen.io/harryberry94/pen/MyOezg

+0

私はまだコメントできませんので、既に[この上の記事がありましたここに](http://stackoverflow.com/questions/16726916/jquery-stop-fixed-floating-div-when-it-hits-another-div) – SCRATK

+0

このようなもの[PEN](http://codepen.io/anon/pen/LNOMQQ)? – Gintoki

+0

似たようなジョンが、フッタの後ろに座っているのではなく、元の位置に戻ることができますか? – Harry

答えて

0

あなたはそれがフッターを重複している場合は、静的な要素を隠す$('nav').addClass('stick');後にifの状態で1つの以上の条件を追加する場合:

var footer_top = $("footer").offset().top; 
var static_div_bottom = $('nav').offset().top + $('nav').height(); 
$('#abc').text(footer_top +" " + static_div_bottom +" " + window_top); 
if(static_div_bottom > footer_top){ 
    $('nav').removeClass('stick'); 
} 
+0

元の位置に戻す方法はありますか? – Harry

+0

'nav 'の' top'を調整してみてください。 $(' nav ')。css(' top '、footer_top - static_div_bottom -12);$( 'nav').css( '位置'、 '固定'); フッターが重なっていないと思われるときに 'top'をリセットすることを忘れないでください。 –

0

あなたが望むすべてがフッター、JavaScriptを使用する必要はありませんし、スクロールイベントを重複しないあなたのdivのためである場合は、そのためのCSSを使用することができます。 nav.stickz-index:-1;を追加するだけです。また、ページ内の他の要素を調べるために大きなz-indexが必要な場合は、フッターposition:absolute;と大きなz-index(フッターの下のコンテンツがbody要素にpadding-bottomを追加しないようにする)を与えることができます。

関連する問題