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 相关文章推荐
一个对于Array的简单扩展
Oct 03 Javascript
javascript TextArea动态显示剩余字符
Oct 22 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
详解JavaScript中循环控制语句的用法
Jun 03 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
浅析vue-router原理
Oct 19 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 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
php5 and xml示例
2006/11/22 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
php自定义session示例分享
2014/04/22 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
jQuery链使用指南
2015/01/20 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
JS调用Android、Ios原生控件
2017/01/06 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
JS实现多选框的操作
2020/06/24 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
Python中字典的基本知识初步介绍
2015/05/21 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
Python文件操作基础流程解析
2020/03/19 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Python调用C语言程序方法解析
2020/07/07 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
2014年初中班主任工作总结
2014/11/08 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL