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


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性能陷阱小结(附实例说明)
Dec 28 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
js闭包所用的场合以及优缺点分析
Jun 22 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
Vue中使用Sortable的示例代码
Apr 07 Javascript
js闭包学习心得总结
Apr 17 Javascript
ES6之Proxy的get方法详解
Oct 11 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正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
php递归实现无限分类的方法
2015/07/28 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python中分数的相关使用教程
2015/03/30 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
python图像和办公文档处理总结
2019/05/28 Python
pytorch forward两个参数实例
2020/01/17 Python
python中with用法讲解
2020/02/07 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
中间件分为哪几类
2016/09/18 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
开业庆典主持词
2014/03/21 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
财务会计岗位职责
2015/02/03 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS