2012-05-04 16 views
1

ウェブサイトにサイドバーがあり、高さに達するとブラウザウィンドウの一番下に固執する必要があります。この音は複雑ですが、おそらくそうではありません。だから、再びhttp://jsfiddle.net/dJXS2/1/jQuery:スクロール時にウィンドウの下端でdivを修正しますか?

$(window).scroll(function() { 

    var bh = $(window).height(); 
    var st = $(window).scrollTop(); 
    var eh = $('#element').height(); 
    var eo = $('#element').offset(); 

    if (st >= (eo.top + eh) - bh) { 
     //$('#element').css('position', 'fixed'); 
    } 


}); 
​ 

- 私が欲しいもの:

私はjsfiddleにほとんどのデモをした あなただけのテストの目的のために体が長くなりDIV page-heightを参照してください。緑色のサイドバーはページの高さよりも短くなっています。ユーザーが緑色のバーの下をスクロールすると、緑色のバーを現在の位置に固定します。だから私は、ユーザーが緑色のバーの下の空白を見ることを望んでいない。もう一度スクロールすると、通常のスクロール動作を元に戻し、緑色のバーをもう修正しないでください。

これに関するアイデアはありますか?

答えて

3

あなたは、位置使用することができます固定

http://jsfiddle.net/dJXS2/5/

$(window).scroll(function() { 

    var bh = $(window).height(); 
    var st = $(window).scrollTop(); 
    var el = $('#element'); 
    var eh = el.height(); 
    if (st >= (100 + eh) - bh) { 
     //fix the positon and leave the green bar in the viewport 
     el.css({ 
      position: 'fixed', 
      left: el.offset().left, 
      bottom: 0 
     }); 
    } 
    else { 
     // return element to normal flow 
     el.removeAttr("style"); 
    } 

}); 
+0

をありがとう!私はなぜ要素のオフセット値を使用することができない任意のアイデア?ヘッダーの高さがダイナミックになる可能性があるので、これが必要です。 – matt

+0

オフセットを使用しようとしましたか?それは私がCSSクラスから離れた理由です。 http://jsfiddle.net/dJXS2/5/ –

+0

'el.offset()。top'は、いったん修正すると違うので使用できません。スクロール・イベントの外側でそれを計算して格納する必要があります。 –

関連する問題