標題比較讓人費解,大概效果就是現在越來越多的看到網站里添加的隨頁面滾動的模塊。比如我這里的頭部就是,當然有時候,效果會更好一些,比如一般時候固定在某處,頁面滾動使這個元素滾出顯示邊界之后,為了方便讀者(或者展示廣告),就把這個模塊變成隨頁面滾動的。測試了一下效果還不錯(當然IE6去死)。
很久沒寫過代碼分享文章了。這里先說一下方法:獲取元素(這里定位元素A)距離頂部的高度,接著設定scroll滾動的事件,比如超過那個高度,把A的位置設定為fixed,小于該高度,修改回relative。這里借zww大叔個圖,如下(當然大叔不是這么弄的,不過效果類似):
下面是代碼。
var scroller_anchor = jQuery(".scroller").offset().top;
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop() >= scroller_anchor && jQuery('.scroller').css('position') != 'fixed') {
jQuery('.scroller').css({
'position': 'fixed',
'margin-top': '0'
});
} else if (jQuery(this).scrollTop() < scroller_anchor && jQuery('.scroller').css('position') != 'relative') {
jQuery(".scroller").css({
'margin-top': '10px',
'position': 'relative'
});
}
});
但是,有時候這樣的方式會有問題,比如元素A上面有動態增長(縮短)的元素(比如突然js寫入了一個東東),這樣第一次獲取的高度就不再合適。這樣就需要設定一個錨點(這里設定為class id為scroller_anchor的div元素)(經zww大叔提醒將class改為ID)。代碼如下:
jQuery(window).scroll(function() {
if(jQuery("#content").find("#scroller_anchor").length > 0){
var scroller_anchor = jQuery("#scroller_anchor").offset().top;
if (jQuery(this).scrollTop() >= scroller_anchor && jQuery('.scroller').css('position') != 'fixed') {
jQuery('.scroller').css({
'position': 'fixed',
'margin-top': '0'
});
jQuery("#scroller_anchor").css('height', '36px');
} else if (jQuery(this).scrollTop() < scroller_anchor && jQuery('.scroller').css('position') != 'relative') {
jQuery("#scroller_anchor").css('height', '0px');
jQuery(".scroller").css({
'margin-top': '10px',
'position': 'relative'
});
}
}
});
上面用到的完整的html代碼如下:
<div id="main-content">
<div id="scroller_anchor" style="height: 0px; "></div>
<div class="scroller">
......
</div>
</div>
至于具體的css,請自己根據需要設定吧。
文章來源:Axiu’s blog
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。