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学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
jQuery实现在列表的首行添加数据
May 19 Javascript
jQuery的position()方法详解
Jul 19 Javascript
ES6中如何使用Set和WeakSet
Mar 10 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
详解Vue组件实现tips的总结
Nov 01 Javascript
用Vue写一个分页器的示例代码
Apr 22 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 Javascript
解决layui-open关闭自身窗口的问题
Sep 10 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
vue el-upload上传文件的示例代码
Dec 21 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JQuery 学习技巧总结
2010/05/21 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
JS实现简单日历特效
2020/01/03 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
python中的五种异常处理机制介绍
2014/09/02 Python
Python 正则表达式(转义问题)
2014/12/15 Python
Python实例一个类背后发生了什么
2016/02/09 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
Python实现SMTP邮件发送
2020/06/16 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
类的核心特性有哪些
2014/01/01 面试题
离婚协议书该怎么写
2014/10/04 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
运动会广播稿100字
2015/08/19 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang