2012-05-19 13 views
6

サイドバーの最後のdivは、ページがスクロールしたときにスティッキーになりますが、フッターで停止します。私はそれがほとんどonline tutorialと一緒に働いているが、disqusのコメントが読み込まれたときに計算が狂ってしまい、ある点にしか行きません。フッタのフローティングスティッキーサイドバーdivを停止する(ほぼ動作します)

ここには作業版http://jsfiddle.net/k56yR/1/がありますが、フッターの高さを計算してページの下部からスクロールしないようにする簡単な方法はありますか?

答えて

14

disqusコメントの読み込み後に$('#footer').offset().top値が変更されることが問題だと思います。コメントが読み込まれるたびに、またはイベントが発生するたびに、footerTop(およびfooterTopの値に基づいてlimit)を更新する必要があります。

のようなもの:julianmは彼のコメント、利用可能hereで指摘したようにほとんどの場合と同様に

$(function(){ // document ready 
    if ($('#sticky').length) { // make sure "#sticky" element exists 
     var el = $('#sticky'); 
     var stickyTop = $('#sticky').offset().top; // returns number 
     var stickyHeight = $('#sticky').height(); 

     $(window).scroll(function(){ // scroll event 
      var limit = $('#footer').offset().top - stickyHeight - 20; 

      var windowTop = $(window).scrollTop(); // returns number 

      if (stickyTop < windowTop){ 
      el.css({ position: 'fixed', top: 0 }); 
      } 
      else { 
      el.css('position','static'); 
      } 

      if (limit < windowTop) { 
      var diff = limit - windowTop; 
      el.css({top: diff}); 
      } 
     }); 
    } 
}); 

は、このためのjQueryプラグインは、そこにあります。また、スティッキーボックスを任意の位置で停止させるストッパー値もサポートしています。

+0

ありがとうございます。それはそうだと思っていましたが、ブラウザーが異なると制限を無視してフッターをスクロールします。キャッシュをクリアするかページをリフレッシュするときに一度動作するように見えますが、繰り返し表示ごとには表示されません。何か案は? ここにサイトhttp://thecomeupbmx.net/videos/red-bull-empire-of-dirt-practice-edit/の例があります(それは私のものではなく、ちょうどそれに取り組んでいます) –

+0

私は何か必要ですこのためのテストケースは常に失敗します。それは古いjsをキャッシュするブラウザかもしれませんが、私はこれを再現することはできません。 – 19greg96

+0

このjQueryプラグインのhttps://github.com/AndrewHenderson/jSticky(私はMike Jonasが提供している前の例のコメントの1つでそれを見ました)が私が探していたものとまったく同じでした。スティッキーボックスを任意の位置に停止させるストッパー値(クラス、ID、または数値でも可)をサポートしています。 – julianm

関連する問題