2011-06-03 102 views

回答

3

下面是一些代碼一個簡單的例子:

var standardPosition = $('div').offset().top; 

$(window).scroll(function() { 
    if ($(this).scrollTop() > standardPosition) $('div').css('position','fixed'); 
    else $('div').css('position','relative'); 
}); 

它來存儲起始位置的地方是很重要的,所以你知道當你遠遠向上滾動足以將其恢復到它在任何位置。

http://jsfiddle.net/qC6HB/

+0

要知道,在某些瀏覽器(我looki在您的Internet Explorer中)滾動事件在滾動時不斷觸發。使用像[Ben Alman的Throttle/Debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/)這樣的插件可以防止類似的情況發生。 – devmatt 2011-06-03 21:13:11

+0

@devmatt:它不能阻止它,它只是掩蓋它。這可能與設置超時並在每次觸發時清除它相同。超時時間將是他的插件中的「延遲」。 – Robert 2011-06-03 21:27:27

0

檢查與$(window).scroll()window的Y位置,一旦到達>比div元素(你可以用offset()得到)的Y位置,您可以更改css來固定。

事情是這樣的:

$(window).scroll(function(e){ 
    var e = $('div').offset(); 
    if ($(window).scrollTop() > e.top){ 
    $('div').css('position','fixed').css('top',0); 
    }else{ 
    $('div').css('position','static'); 
    } 


}); 

例子:http://jsfiddle.net/niklasvh/HUxVC/