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 指导方针
Apr 05 Javascript
javaScript 数值型和字符串型之间的转换
Jul 25 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
May 11 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 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简单获取视频预览图的方法
2015/03/12 PHP
php动态函数调用方法
2015/05/21 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python 日志增量抓取实现方法
2018/04/28 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python suds访问webservice服务实现
2020/06/26 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
想学画画?python满足你!
2020/12/24 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
和平主题的演讲稿
2014/01/12 职场文书
开会迟到检讨书
2014/02/03 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
先进个人评语大全
2015/01/04 职场文书
会议营销主持词
2015/07/03 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python