【JavaScript】兼容IE6的滚动监听
来源:互联网 发布:js获取整个form的值 编辑:程序博客网 时间:2024/04/30 17:02
本文是《【jQuery】兼容IE6的滚动监听》(点击打开链接)的进一步改进,这次无须引入jQuery纯粹使用JavaScript来实现,精简了语法。同时,不会在JavaScript处写过多的代码,导致难以维护。具体效果如下,此乃IE6的效果:
这里运用了锚点跳转,同时,随着滚动条的滚动右方目录的超级链接会变色。
这个目录左方的点的实心还会进一步变化。
具体思想如下,主要是判断此时浏览器的顶部到达什么位置。
首先是基本的HTML布局,这里关于目录在IE6的position:fixed效果在《【CSS】IE6中的position:fixed问题与随滚动条滚动的效果》(点击打开链接)已经说过了,这里不再赘述。之后,目录的布置采用了ul-li列表,而且利用list-style设置li前面点的样式,当然你不喜欢这个点就设置为none。个人觉得没必要做成那种炫酷的时间轴效果。反正你做多了,你的客户也不会表扬你,当然如果其非要做成效果,你就只好在这个li前面贴图片咯。具体是用list-style-image:url("xxx");。
然后,这个被设置为position:fixed的目录,你给个top或者bottom属性它就好,top与left坚决不设置。
让其在水平方向上严格遵循父div的float:left,width:20%的布局。
最后,注意将各个诸如<a id="title1" name="title1"></a>的锚点放在标题之前,让其处于标题之上,而不是在标题之下,跳转的时候能够看到标题。
<!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>Untitled Document</title><style type="text/css">.title_list { position: fixed; top: 100px;/*IE6实现position: fixed;*/_position: absolute;_top: expression(eval(document.documentElement.scrollTop));_margin-top:100px;*list-style-position:inside;/*解决IE6与IE7前面的点不显示的问题*/}</style></head><body><div style="float:left;width:80%;min-height:100px;"><a id="title1" name="title1"></a><h1>标题1</h1><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><a id="title2" name="title2"></a><h1>标题2</h1><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><a id="title3" name="title3"></a><h1>标题3</h1><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><a id="title4" name="title4"></a><h1>标题4</h1><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p><p>sss</p></div><div style="float:left;width:20%;"><ul class="title_list" id="title_list"><li style="list-style:disc;"><a style="color:red" href="#title1">标题1</a></li><li style="list-style:circle;"><a href="#title2">标题2</a></li><li style="list-style:circle;"><a href="#title3">标题3</a></li><li style="list-style:circle;"><a href="#title4">标题4</a></li></ul></div><div style="clear:both"></div> </body></html>之后是脚本部分,这次将ul-li目录部分放到HTML去,而且直接在HTML放好锚点,因此脚本精简很多,按照基本思想的图,去实现。这里求flag的时候,因为是一个条件结构求浏览器的顶部去到哪里,对应多个条件分支,可能处在标题1,标题2,标题3……,所以这里活用三目条件运算符?:,用到了《【C++】对cin输入字符的判断与分段函数的处理》(点击打开链接)的写法。
<script type="text/javascript"> window.onscroll = function(){ var t=document.documentElement.scrollTop||document.body.scrollTop;//取当前高度 //取各个锚点的位置 var title1_height=document.getElementById("title1").offsetTop;var title2_height=document.getElementById("title2").offsetTop;var title3_height=document.getElementById("title3").offsetTop;var title4_height=document.getElementById("title4").offsetTop;flag=(t<title1_height)?-1:(t<title2_height)?0:(t<title3_height)?1:(t<title4_height)?2:3;var title_list_arr=document.getElementById("title_list").getElementsByTagName("li");//取出 id="title_list"的ul下的li数组for(var i=0;i<title_list_arr.length;i++){if(flag==i){//找到当前浏览器固定达到的位置所对应的标题 title_list_arr[i].style.listStyle="disc"; title_list_arr[i].getElementsByTagName("a")[0].style.color="red";//旗下的a标签里面的内容为红色 }else{//其余标题title_list_arr[i].style.listStyle="circle";title_list_arr[i].getElementsByTagName("a")[0].style.color="blue";//旗下的a标签里面的内容为蓝色}}if(flag==-1){//如果没有任何一个标题碰到浏览器顶部,那么就认为是现在悬停在第一个标题title_list_arr[0].style.listStyle="disc";title_list_arr[i].getElementsByTagName("a")[0].style.color="red";//旗下的a标签里面的内容为红色} } </script>
2 0
- 【JavaScript】兼容IE6的滚动监听
- 【jQuery】兼容IE6的滚动监听
- 【JavaScript】原生态兼容IE6可调可控的滚动文字
- 【JavaScript】利用滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
- 【JavaScript】利用滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
- javascript 兼容 IE6、IE7、FF 的“加入收藏”
- javascript 兼容 IE6、IE7、FF 的“加入收藏”
- [JavaScript]兼容IE6/7的getElementByClassName
- 【JavaScript】兼容IE6的收起折叠效果
- 【JavaScript】兼容IE6的JS模板化
- 图片无缝滚动兼容ie6
- 【JavaScript】原生态的兼容IE6的标签页
- javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 【JavaScript】原生态兼容IE6的图片轮播
- 【JavaScript】兼容IE6可调可控的图片滑块
- 图片向左滚动(兼容火狐IE6)
- ie6的兼容方法
- jQuery学习笔记之四
- 大规模机器学习的相关资料集锦
- [perl]ftpsync
- 九度考研真题 浙大 2011-1浙大1001:A+B for Matrices
- Android开发总结笔记 四大组件之ContentPovider(上) 1-2-8
- 【JavaScript】兼容IE6的滚动监听
- 将图片以二进制数组存入数据库,从数据库中取出转为图片
- 喝咖啡的好处
- hihocoder 1121 : 二分图一•二分图判定
- 代码混淆详解
- 九度考研真题 浙大 2011-2浙大1002:Grading
- 单例模式
- public protected private继承访问权限—C++
- 修改应用图标及添加启动画面(更新官方命令行工具自动生成)