部落格側邊欄模組跟隨捲軸滑動固定效果的實現方法(js+jquery等)_javascript技巧

來源:互聯網
上載者:User

當一個頁面內容很長的時候,側邊欄欄目可能顯得太短,當視窗滑動到靠下的位置,則側邊即失去了展示內容的機會。很多新聞資訊類網站如新浪、網易、CSDN等,會在側邊欄的右下角以固定的小彈窗形式,以提供更多的內容展示方式,但這並不適合部落格和web2.0風格的網站。

現在很多的獨立部落格和網站如人人網等,都使用了讓側邊欄模組隨捲軸滑動而位置固定的效果。就是當一個頁面很長的時候,設定側欄內容會跟隨捲軸,這種效果適用於評論較多、內容較長的網站。志文工作室調研了幾種類似功能的實現方法,摘錄之以供參考。

參考一、提高瀏覽量的特效:側欄跟隨捲軸

來源:盧鬆鬆部落格
http://lusongsong.com/reed/453.html

代碼如下:

CSS部分:

複製代碼 代碼如下:

/*側欄跟隨*/  
#box{float:left; position:relative;width:250px;}
.div1{width:250px;}
.div2{position:fixed;_position:absolute;top:0;z-index:250;}

註:每個網站的側欄寬度不同,可根據你網頁的寬度調整div1的寬度,我的是width:250px;,把這段代碼添加到你的CSS檔案中即可。

JS部分:

JavaScript代碼

複製代碼 代碼如下:

//側欄跟隨   
(function(){   
    var oDiv=document.getElementById("float");   
    var H=0,iE6;   
    var Y=oDiv;   
    while(Y){H+=Y.offsetTop;Y=Y.offsetParent};   
    iE6=window.ActiveXObject&&!window.XMLHttpRequest;   
    if(!iE6){   
        window.onscroll=function()   
        {   
            var s=document.body.scrollTop||document.documentElement.scrollTop;   
            if(s>H){oDiv.className="div1 div2";if(iE6){oDiv.style.top=(s-H)+"px";}}   
            else{oDiv.className="div1";}       
        };   
    }   
})();  

註:這段代碼可放入任意JS檔案中,比如我放在了util.js 檔案裡。

網頁代碼部分:

複製代碼 代碼如下:

<div id="box">  
<div id="float" class="div1">    
這裡寫你網站的代碼與標籤   
</div>  
</div>  

註:這裡可以放文章列表、聯盟廣告,總之是個提高點擊率的好方法。Z-blog使用者把此段代碼添加到single.html的側欄位置即可。

特別提示:此代碼試用與任何CMS系統,但該特效在IE6下無法實現,其餘瀏覽器均沒問題,同時側欄其餘部分應使用靜態檔案調用,使用JS調用欄目會出現代碼重疊現象,調用聯盟廣告沒問題。

參考二、添加側邊欄隨捲軸滾動效果(樣本)

來源:自由的風部落格(http://loosky.net/?p=2028)

步驟如下:

1、給側邊欄的各個模組加上一些class標誌
如果你的側邊欄之前已經有了這些class標誌加以區分,只要使用就可以了,不用另外加。添加ID也可以實現效果,但w3c標準不允許同一頁面出現多個同樣的ID,所以最好用class樣式方式。

2、在網站頁面中的任意js檔案中加上如下代碼:

JavaScript代碼

複製代碼 代碼如下:

var rollStart = $('.Statistics'), //滾動到此區塊的時候開始隨動   
rollOut = $('.WidgetMeta,.Statistics'); //隱藏rollStart之後的區塊   
rollSet = $('.RRPosts,.TagsCloud'); //添加rollStart之前的隨動區塊   

rollStart.before('<div class="rollbox" style="position:fixed;width:inherit;"></div>');   
var offset = rollStart.offset(),objWindow = $(window),rollBox = rollStart.prev();   
objWindow.scroll(function() {   
if (objWindow.scrollTop() > offset.top){   
if(rollBox.html(null)){   
rollSet.clone().prependTo('.rollbox');   
}   
rollOut.fadeOut();   
rollBox.show().stop().animate({top:0,paddingTop:10},400);   
} else {   
rollOut.fadeIn();   
rollBox.hide().stop().animate({top:0},400);   
}   
});  

註:捲動區域的內容不能太長,不然會出現無限下拉的情況。

參考三、JQUERY SCROLL FOLLOW

這是一個外掛程式,添加步驟也很簡單,下載壓縮包解壓到網站目錄,然後按照步驟操作即可。
詳細可參考:
http://kitchen.net-perspective.com/open-source/scroll-follow/

樣本頁面:
http://kitchen.net-perspective.com/sf-example-1.html
http://kitchen.net-perspective.com/sf-example-2.html
http://kitchen.net-perspective.com/sf-example-3.html
http://kitchen.net-perspective.com/sf-example-4.html

側欄模組隨視窗滑動(樣本頁面)
來源:http://www.mb-wx.com/common/msay.js
這段代碼來自木本無心的部落格(pjblog),原理很簡單,就是當視窗到達指定模組位置後,開始判斷其距離頂端的距離並進行調整。該段代碼結合應用在了志文工作室部落格側邊欄。

JavaScript代碼

複製代碼 代碼如下:

//側欄模組隨視窗滑動   
jQuery(document).ready(function($) {   
 $(function() {   
  var $sidebar = $("#Side_relativelog"),   
  $window = $(window),   
  offset = $sidebar.offset(),   
  topPadding = 0;   
  $window.scroll(function() {   
   if ($window.scrollTop() > offset.top) {   
    $sidebar.stop().animate({   
     marginTop: $window.scrollTop() - offset.top + topPadding   
    });   
   } else {   
    $sidebar.stop().animate({   
     marginTop: 0   
    });   
   }   
  });   
 });   
}); 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.