2011-08-10 23 views

回答

11

This是,雖然你可能要捏造與周圍的CSS位的總體思路。

var header = $("#header"); 
$(document).scroll(function(e) { 
    if($(this).scrollTop() > $("#banner").height()) { 
     header.css({"position" : "fixed", "top" : "0"}); 
    } else { 
     header.css("position", "relative"); 
    } 
}); 
1

您需要檢查不同的滾動位置:

var $header = $('#header'), 
    headerPos = $header.position().top, 
    $win = $(window); 

$win.scroll(function() { 

    if ($win.scrollTop() >= headerPos) { 

     $header.css({ 
      'position':'fixed', 
      'top':0, 
      'width': '100%' 
     }); 

    } 

    if ($win.scrollTop() <= headerPos) { 

     $header.css({ 
      'position': 'static' 
     }); 

    } 

}); 

http://jsfiddle.net/DOSBeats/zEDMv/10/

+0

當您滾動回到頁面頂部這是不行的,它仍然是固定的。 – tw16

+2

我分叉了上面,並調整了一些,所以如果你再次向上滾動橫幅:http://jsfiddle.net/jethrolarson/zEDMv/18/ –

+0

再加上你的版本是少代碼,做得好! – Seth

1

Here的一個稍微更簡潔的版本:

var header = $('#header'), 
    bannerHeight = $('#banner').height(), 
    win = $(window); 

win.scroll(function() { 
    header.css({ top: Math.max(Number(win.scrollTop() - bannerHeight), 0) }); 
});