侧栏跟随滚动的简单实现代码


Posted in Javascript onMarch 18, 2013

浏览网站时经常看到有的网站上,侧栏里的有些内容滚动到页面顶端以后就固定在那个位置,不再跟随滚动条而滚动。这种效果叫做“侧栏跟随滚动”。它对于那些不希望被滚动到页面之外的内容是非常有用的。
侧栏跟随滚动的实现方法有很多种,比较常见的有两种,这两种方法在NEOEASE写的一篇文章中介绍的很清楚,一种是借助jQuery来实现,这种方法对于那些平时不需要加载jQuery库的网站来说,显然是一种负担(jQuery现在是越做越大了……)。另外一种方法是通过原生javascript编写的效果,这种方法相比上一种,要轻盈得多。但是,我还是不够满足,原生的javascript写的文件也有4K多,对于我这种至简至上的人来说,还是太繁杂了。那么有没有更简单的实现办法呢?

答案当然是肯定的。下面具体介绍。
先说html文件(当然也可是动态文件,里面总归有html代码的)

<div id="box"> 
<div id="float" class="div1"> 
在这里加入需要跟随滚动的内容 
</div> 
</div>

然后是CSS代码
#box{float:left; position:relative;width:250px;} 
.div1{width:250px;} 
.div2{position:fixed;_position:absolute;top:0;z-index:250;}

最后是JS代码(可以放在需要滚动的页面中,也可以放在单独的JS文件中再调用)
(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";} 
}; 
} 
})();

OK,大功告成,够简单吧。
最后给个 示例。
Javascript 相关文章推荐
JavaScript的面向对象(二)
Nov 09 Javascript
IE bug table元素的innerHTML
Jan 11 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
Mar 25 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
Vue.js中数据绑定的语法教程
Jun 02 Javascript
JavaScript实现短信倒计时60s
Oct 09 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
Node.js使用Angular简单示例
May 11 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
JS特权方法定义作用以及与公有方法的区别
Mar 18 #Javascript
Javascript判断对象是否相等实现代码
Mar 18 #Javascript
jQuery+css实现图片滚动效果(附源码)
Mar 18 #Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 #Javascript
javascript定时变换图片实例代码
Mar 17 #Javascript
JS前端框架关于重构的失败经验分享
Mar 17 #Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 #Javascript
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
第三节 定义一个类 [3]
2006/10/09 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
重新认识php array_merge函数
2014/08/31 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
centos7之Python3.74安装教程
2019/08/15 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
初中生期末考试的自我评价
2013/12/17 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
通用员工手册范本
2015/05/14 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
加强党性修养心得体会
2016/01/21 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python