JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件


Posted in Javascript onOctober 10, 2016

现在网上的回到顶部组件,懂不懂就一大段让人看不懂javascript代码,还各种不兼容。起始这个组件,完全可以自己利用javascript的滚动事件window.onscroll与position:fixed手写。IE6的兼容性问题主要出现在position:fixed上面,如何解决已经在《【CSS】IE6中的position:fixed问题与随滚动条滚动的效果》(点击打开链接)介绍过了。

下面具体说说如何利用JavaScript中的滚动事件window.onscroll实现这个回到顶部组件。具体效果如下:

IE6:

JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件

IE8:

JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件

FireFox:

JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件

首先是HTML+CSS的布局,在页面的最顶部布置一个id与name皆为page_top的<a></a>作为锚点,之所以要共同设置id与name一切为了兼容。

然后就是在右下角放一个position:fixed的,内容为↑的div,当然你想搞得炫一点可以弄成一张图片,甚至搞成♂也可以,这个div一开始是隐藏的。

最后是一大堆没有意义的、占位置的<p>,没什么好说的。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <title>回到顶部</title>
 <style type="text/css">
 #top_div{
 position:fixed;
 bottom:0px;
 right:0px;
 display:none;
 /*兼容IE6的position:fixed*/
 _position: absolute;     
 _top: expression(eval( 
 document.documentElement.scrollTop + document.documentElement.clientHeight-this.offsetHeight- 
 (parseInt(this.currentStyle.marginTop,10)||0)- 
 (parseInt(this.currentStyle.marginBottom,10)||0))); 
 _margin-bottom:0px;
 _margin_right:0px;
 }
 </style>
 </head>
 <body>
 <a id="page_top" name="page_top"></a><!--回到顶部的锚点-->
 <div id="top_div"><a href="#page_top" style="text-decoration:none">↑</a></div>
 <p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p>
 <p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p>
 <p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p>
 <p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p>
 <p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p><p>占位置的内容</p>
 </body>
</html>

之后的脚本部分,一切很明朗了:

<script type="text/javascript">
 window.onscroll = function(){
  var t = document.documentElement.scrollTop || document.body.scrollTop;
  var top_div = document.getElementById("top_div");
  if (t >= 300) {
   top_div.style.display = "inline";
  }
  else {
   top_div.style.display = "none";
  }
 }
</script>

仅有一个滚动事件window.onscroll,就是用户滚动滚动条就会触发这个时事件,var t = document.documentElement.scrollTop || document.body.scrollTop;能够兼容绝大部分浏览器,下面的t>=300是滚动条下滚300px之后,让top_div显示,这里用inline是以免block,会影响其它样式。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
Mar 23 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
jquery+javascript编写国籍控件
Feb 12 Javascript
JS扩展方法实例分析
Apr 15 Javascript
jQuery插件formValidator实现表单验证
May 23 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 Javascript
Javascript动画效果(2)
Oct 11 Javascript
canvas实现钟表效果
Feb 13 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
JavaScript实现留言板案例
Mar 17 Javascript
通过实例解析jQ Ajax操作相关原理
Sep 23 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 #Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 #Javascript
jQuery继承extend用法详解
Oct 10 #Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 #Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
Oct 10 #Javascript
You might like
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
python实现的文件同步服务器实例
2015/06/02 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python实现PCA降维的示例详解
2020/02/24 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
DIY手工制作经营店创业计划书
2014/02/01 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
《分一分》教学反思
2014/04/13 职场文书
初中学校军训方案
2014/05/09 职场文书
信访稳定工作汇报
2014/10/27 职场文书
校园开放日新闻稿
2015/07/17 职场文书