博客侧边栏模块跟随滚动条滑动固定效果的实现方法(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 相关文章推荐
js中cookie的使用详细分析
May 28 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 Javascript
实测jquery data()如何存值
Aug 18 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
学习JavaScript正则表达式
Nov 13 Javascript
Javascript 基础---Ajax入门必看
Jul 06 Javascript
对angularjs框架下controller间的传值方法详解
Oct 08 Javascript
小程序实现页面顶部选项卡效果
Nov 06 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
浅析vue-router中params和query的区别
Dec 24 Javascript
基于JQuery实现页面定时弹出广告
May 08 jQuery
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
php4的session功能评述(三)
2006/10/09 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
php时间计算相关问题小结
2016/05/09 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
pyramid配置session的方法教程
2013/11/27 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
Python pandas如何向excel添加数据
2020/05/22 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
python 基于wx实现音乐播放
2020/11/24 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
秦兵马俑教学反思
2014/02/07 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
2015年宣传工作总结
2015/04/08 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书