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


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实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 Javascript
JS实现商品倒计时实现代码
May 03 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
jQuery实现可拖动进度条实例代码
Jun 21 jQuery
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
Vue一个案例引发的递归组件的使用详解
Nov 15 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
js验证身份证号码记录的方法
Apr 26 Javascript
vue 项目引入echarts 添加点击事件操作
Sep 09 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的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP页面中文乱码分析
2013/10/29 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
使javascript也能包含文件
2006/10/26 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
python正则表达式re模块详解
2014/06/25 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
tensorflow多维张量计算实例
2020/02/11 Python
美国家居装饰店:Pier 1
2019/09/04 全球购物
黄继光的英雄事迹材料
2014/02/13 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
2014年派出所工作总结
2014/11/21 职场文书