博客侧边栏模块跟随滚动条滑动固定效果的实现方法(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 Object的extend是一个常用的功能
Dec 02 Javascript
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
jquery animate图片模向滑动示例代码
Jan 26 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
js改变Iframe中Src的方法
May 05 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
微信小程序 教程之小程序配置
Oct 17 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
ckeditor一键排版功能实现方法分析
Feb 06 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
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
js实现分页功能
2017/05/24 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
Angularjs上传图片实例详解
2017/08/06 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
numpy.array 操作使用简单总结
2019/11/08 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
思想汇报格式
2014/01/05 职场文书
中学自我评价
2014/01/31 职场文书
计生专干事迹
2014/05/28 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
实例讲解Python中sys.argv[]的用法
2021/06/03 Python