2011-10-19 8 views
2

ユーザーがページをスクロールダウンすると、ヘッダーにdivスティックを作成しようとしています。 この例が見つかりました How can I make a div stick to the top of the screen once it's been scrolled to?divを画面上部に貼り付け、フッターを打つ前に止める

私は24票を持つコードを使用しました。 Live demo

問題: 1.私はフッターを打つ前にdivの停止をしたいです。私はフッターの上にそれを表示したくない。 2. jQuery 1.3.2ではなぜこれが動作するのですが、1.5.2以降では動作しません。

ofcourse他のjqueryコード/プラグインまたはideeaは素晴らしいでしょう!

+2

offset()関数が変更されました。 {scroll:false}を削除するだけでJQ 1.5で動作すると思います。 – Gerben

+0

ありがとうGerben!それはうまくいった! {scrool:false}を削除すると、JQ 1.5.2 –

答えて

4
$(window).load($(function() 
{ 
    var elem = $("#scroller"); 
    var top = elem.offset().top; 
    var maxTop = $("#footer").offset().top - elem.height(); 
    var scrollHandler = function() 
    { 
     var scrollTop = $(window).scrollTop(); 
     if (scrollTop<top) { 
     elem.css({position:"relative",top:""})//should be "static" I think 
     } else if (scrollTop>maxTop) { 
     elem.css({position:"absolute",top:(maxTop+"px")}) 
     } else { 
     elem.css({position:"fixed",top:"0px"}) 
     } 
    } 
    $(window).scroll(scrollHandler);scrollHandler() 

})); 

フィドル:http://fiddle.jshell.net/3ATzd/2/show/ だけでは#scroller上マージントップを好きではないと思います。私はscroller-anchor要素の必要もなくなったので、これを削除することができます。

+0

とうまく動作するようになりました! ..しかし、あなたは正しいです。マージントップが好きではありません。私たちがscrollerに600pxの高さを設定した場合、それはフッタを越えることになりますが、わずか10px程度です。 http://fiddle.jshell.net/3ATzd/5/show/ –

+0

汚れたトリックは、 var maxTop = $( "#footer")。offset()。top - elem.height() - 10 ; –

+0

私もこれを見つけました: http://kitchen.net-perspective.com/open-source/scroll-follow/ 他の情報を共有してもらえますか、ありがとうございます。 –

関連する問題