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


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 相关文章推荐
jQuery 获取对象 基本选择与层级
May 31 Javascript
使用js完成节点的增删改复制等的操作
Jan 02 Javascript
js onmousewheel事件多次触发问题解决方法
Oct 17 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
Bootstrap常用组件学习(整理)
Mar 24 Javascript
Node.js引入UIBootstrap的方法示例
May 11 Javascript
koa2实现登录注册功能的示例代码
Dec 03 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
详解VUE调用本地json的使用方法
May 15 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
Sep 18 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
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
Python中的super用法详解
2015/05/28 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python实现批量修改文件名
2020/03/23 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
为什么称python为胶水语言
2020/06/16 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
python palywright库基本使用
2021/01/21 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
销售人员个人求职信
2013/09/26 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
刑事上诉状范文
2015/05/22 职场文书
回门宴新娘答谢词
2015/09/29 职场文书