最近在一些博客看到側邊欄某些板塊,隨着滾動條的滑動,而跟着滑動或者固定的效果,感覺非常的人性化,一來可以彌補當一個頁面很長,但側邊欄太短的 時候的空白,二來可以合理利用空間展示更多信息,可以大大的提高曝光率和點擊率。這樣子的效果很適合於文章的列表(比如月度排行、熱門文章之類的),還有 適合於廣告聯盟的展示。所以去網上找了一些資料,整理了一下,現在分享給大家,也方便以后自己查閱,希望對大家有用。
效果一:側邊欄固定模塊
來源:盧松松博客
Js代碼
//側欄跟隨 (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文件引用,這段代碼可放入任意JS文件中
CSS代碼:
/*側欄跟隨*/ #box_float {float:left; position:relative; width:250px;} .div1 {width:250px;} .div2 {position:fixed; _position:absolute; top:0; z-index:999;}
注:樣式代碼僅為參考,具體的調整,請結合自己的網站調整。
HTML代碼:
<div id="box_float"> <div id="float" class="div1"> 這里寫你網站的代碼與標簽 </div> </div>
注:這里可以放文章列表、聯盟廣告,總之是個提高點擊率的好方法。wordpress用戶把此段代碼添加到sidebar.php的側欄位置即可。
特別提示:此代碼試用與任何CMS系統,但該特效在IE6下無法實現,其余瀏覽器均沒問題,同時側欄其余部分應使用靜態文件調用,使用JS調用欄目會出現代碼重疊現象,調用聯盟廣告沒問題。
效果二:側邊欄隨窗口滾動(滑動效果)
來源:知更鳥
實現這個隨窗口滾動效果,首先主題必須加載jQuery。已經完美解決側邊欄會頂着頁腳無限滾下去的bug,一起看看代碼:
<script type="text/javascript"> var documentHeight = 0; var topPadding = 15; $(function() { var offset = $("#sidebar").offset(); documentHeight = $(document).height(); $(window).scroll(function() { var sideBarHeight = $("#sidebar").height(); if ($(window).scrollTop() > offset.top) { var newPosition = ($(window).scrollTop() - offset.top) + topPadding; var maxPosition = documentHeight - (sideBarHeight + 368); if (newPosition > maxPosition) { newPosition = maxPosition; } $("#sidebar").stop().animate({ marginTop: newPosition }); } else { $("#sidebar").stop().animate({ marginTop: 0 }); }; }); }); </script>
將上述javascript代碼加到主題頭部header.php模版中。修改其中的#sidebar
為你的主題側邊選擇器名稱;根據不同的主題頭部模版高度,適當調整其中的數字“368”。
效果三:添加側邊欄隨滾動條滾動效果(無滑動)
來源:自由的風博客
給側邊欄的各個模塊加上一些class標志,如下圖框框里面的內容:
如果你的側邊欄之前已經有了這些class標志加以區分,只要使用就可以了,不用另外加。
在主題的js文件中加上如下代碼:
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