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


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 缓存问题的几个解决方法
Nov 11 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
JavaScript中使用concat()方法拼接字符串的教程
Jun 06 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
JavaScript中使用数组方法汇总
Feb 16 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
详解javascript appendChild()的完整功能
Aug 18 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
解决vue请求接口第一次成功,第二次失败问题
Sep 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
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python解析json实例方法
2013/11/19 Python
Python性能提升之延迟初始化
2016/12/04 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
keras多显卡训练方式
2020/06/10 Python
Python实现EM算法实例代码
2020/10/04 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
网络安全方面的面试题
2015/11/04 面试题
毕业晚会主持词
2014/03/24 职场文书
标准单位租车协议书
2014/09/23 职场文书
党性分析材料格式
2014/12/19 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python