博客侧边栏模块跟随滚动条滑动固定效果的实现方法(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 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
js实现简洁大方的二级下拉菜单效果代码
Sep 01 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
Nov 25 Javascript
Vue-cli创建项目从单页面到多页面的方法
Sep 20 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
JS原生瀑布流效果实现
Apr 26 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
angular异步验证防抖踩坑实录
Dec 01 Javascript
解析原生JS getComputedStyle
May 25 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
常用PHP封装分页工具类
2017/01/14 PHP
表格 隔行换色升级版
2009/11/07 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
vue.js表格分页示例
2016/10/18 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
单链表反转python实现代码示例
2018/02/08 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
应聘教师自荐信
2013/10/12 职场文书
集体婚礼证婚词
2014/01/13 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
创业女性典型材料
2014/05/02 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
新娘婚礼致辞
2015/07/27 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
导游词之临安白水涧
2019/11/05 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
Python字符串格式化方式
2022/04/07 Python