博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)


Posted in Javascript onMarch 24, 2013

当一个页面内容很长的时候,侧边栏栏目可能显得太短,当窗口滑动到靠下的位置,则侧边即失去了展示内容的机会。很多新闻资讯类网站如新浪、网易、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    
    });    
   }    
  });    
 });    
}); 
Javascript 相关文章推荐
javascript中最常用的继承模式 组合继承
Aug 12 Javascript
使用jquery为table动态添加行的实现代码
Mar 30 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 Javascript
js替代copy(示例代码)
Nov 27 Javascript
jquery根据属性和index来查找属性值并操作
Jul 25 Javascript
原生JavaScript实现异步多文件上传
Dec 02 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
Three.js中矩阵和向量的使用教程
Mar 19 Javascript
JS实现判断移动端PC端功能
Feb 21 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 Javascript
js 字符串转换成数字的三种方法
Mar 23 #Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 #Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 #Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 #Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 #Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 #Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 #Javascript
You might like
PHP中的替代语法简介
2014/08/22 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
深入理解react-router 路由的实现原理
2018/09/26 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python实现字符串和字典的转换
2018/09/29 Python
Python线程同步的实现代码
2018/10/03 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
环保倡议书怎么写
2014/05/16 职场文书
爱与责任演讲稿
2014/05/20 职场文书
大学生就业自荐书
2014/06/16 职场文书
共青团员自我评价范文
2014/09/14 职场文书
英文慰问信
2015/02/14 职场文书
中学生学习保证书
2015/02/26 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers