博客侧边栏模块跟随滚动条滑动固定效果的实现方法(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 相关文章推荐
jQuery 源码分析笔记(5) jQuery.support
Jun 19 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
JavaScript 七大技巧(二)
Dec 13 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 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开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
python 容器总结整理
2017/04/04 Python
python 文件操作删除某行的实例
2017/09/04 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Python处理CSV与List的转换方法
2018/04/19 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
Django 开发环境配置过程详解
2019/07/18 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python3监控疫情的完整代码
2020/02/20 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
Servlet如何得到服务器的信息
2015/12/22 面试题
光荣入党自我鉴定
2014/01/22 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
消防标语大全
2014/06/07 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
初婚初育证明范本
2014/11/24 职场文书
陕西导游词
2015/02/04 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书