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 相关文章推荐
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jQuery获得内容和属性示例代码
Jan 16 Javascript
jquery实现submit提交表单
Feb 03 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
JavaScript中的Array 对象(数组对象)
Jun 02 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
React中jquery引用的实现方法
Sep 12 jQuery
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
js回调函数原理与用法案例分析
Mar 04 Javascript
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
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
隐藏你的.php文件的实现方法
2007/03/19 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python中下划线的使用方法
2015/03/27 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python虚拟环境venv用法详解
2020/05/25 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
会计专业自我鉴定范文
2013/12/29 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
医德医风演讲稿
2014/05/20 职场文书
大专生自荐书范文
2014/06/22 职场文书
2014年科室工作总结
2014/11/20 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书