2012-08-28 44 views

回答

2

喜歡的東西:

$(window).on('scroll', function() { 
    $("#myDivID").css({ 
     position: $(this).scrollTop()<200?'relative':'fixed', 
     top: $(this).scrollTop()<200?'200px':'0px' 
    }); 
}); 

你可能還需要重置元素的top位置。

+0

哇,那很快。謝謝!我將如何去「重置頂部」? – BeDesinged

+0

我建議先前緩存一個對'$(「#myDivID」)'的引用,否則每次發生滾動事件時你都會重新評估。你可以在上面的範圍聲明它,將所有的代碼包裝在一個匿名的即時執行函數中 – fcalderan

+0

好吧,如果你的元素的css top設置爲'200px',並且向下滾動直到元素完全位於屏幕的頂部,然後突然變成'fixed'位置,你會發現元素從頂部跳到200px,因爲現在它不再處於文檔流中。在這種情況下,您必須將頂部位置更改爲零,但確切數字取決於您的設計。 – adeneo

0

我知道至少有幾個插件可以做到這一點。不記得一個我最後一次見到的名字,但這裏有一個我寫我自己:http://code.google.com/p/sleekphp/source/browse/trunk/Sites/SleekBase/Modules/Base/JS/jQuery.fixedIfNeeded.js

您可以使用它,像這樣:

$('#my-element').fixedIfNeeded(); 

有一個指定是否應將元素可選參數在到達另一個元素(例如頁腳)之前停止修復:

$('#my-element').fixedIfNeeded('#footer'); 
相關問題