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


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 相关文章推荐
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
Jan 11 Javascript
超级好用的jQuery圆角插件 Corner速成
Aug 31 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
vue通过路由实现页面刷新的方法
Jan 25 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 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中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
农历与西历对照
2006/09/06 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python3安装speech语音模块的方法
2018/12/24 Python
python标记语句块使用方法总结
2019/08/05 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
教师实习期自我鉴定
2013/10/06 职场文书
人力资源管理毕业生自荐信
2013/11/21 职场文书
计算机专业推荐信范文
2013/11/27 职场文书
音乐专业自荐信
2014/02/07 职场文书
心得体会的写法
2014/09/05 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
青岛市的收音机研制与生产
2022/04/07 无线电