原生js实现随着滚动条滚动,导航会自动切换的效果
2016-07-29 19:47
681 查看
最近学习前端,把前面用原生js写的一段有关tab切换效果的代码贴上,实现的效果比较简陋,请大家见谅
大家有兴趣的可以复制下看下效果,谢谢大家浏览!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>随着滚动条滚动的Tab切换</title> <style> *{ list-style:none; margin:0; padding:0; text-decoration:none; font-family:'Microsoft YaHei'; } li{ width:100px; height:50px; line-height:50px; float:left; border-right:2px solid #eee; text-align:center; cursor:pointer; } ul{ width:1200px; margin:0 auto; } .nav{ height:52px; width:100%; background:#f5f5f5; } .nav .cur{ background:#fff; border-top:2px solid #1a92cf; color:#1a92cf; } .fixed{ position:fixed; top:0; left:0; } a{ color:#505050; } </style> </head> <body> <br/><br/><br/><br/><br/><br/><br/> <div class="nav" id="nav-container"> <ul id="nav-box">` <li class="cur">text1-nav</li> <li>text2-nav</li> <li>text3-nav</li> </ul> </div> <div id="text"> <div style="width:100%;height:500px;background:green;text-align:center;">text1</div> <div style="width:100%;height:500px;background:yellow;text-align:center;">text2</div> <div style="width:100%;height:500px;background:blue;text-align:center;">text3</div> </div> <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> <script> var navContainer = document.getElementById("nav-container"); var navBox = document.getElementById("nav-box"); var text = document.getElementById("text"); var navBoxChild = navBox.children; var textChild = text.children; var num = navContainer.offsetTop; var a = navContainer.offsetHeight; window.onscroll = function(){ var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; if(scrollTop >= num){ navContainer.className = "nav fixed"; text.style.paddingTop = a +"px"; }else{ navContainer.className = "nav"; text.style.paddingTop = ""; } //当导航与相应文档接触的时候自动切换 //method1 for(var i=0;i<navBoxChild.length;i++){ if( scrollTop + a >= textChild[i].offsetTop){ for(var j=0;j<navBoxChild.length;j++){ navBoxChild[j].className = ""; } navBoxChild[i].className = "cur"; } } }; for(var i=0;i<navBoxChild.length;i++){ var interval; navBoxChild[i].index = i; navBoxChild[i].onclick = function(){ var self = this; clearInterval(interval); interval = setInterval(function(){ if(document.body.scrollTop + a<=textChild[self.index].offsetTop){ document.body.scrollTop += 40; if(document.body.scrollTop + a>=textChild[self.index].offsetTop){ document.body.scrollTop = textChild[self.index].offsetTop-a; clearInterval(interval); } }else{ document.body.scrollTop /= 1.1; if(document.body.scrollTop + a<=textChild[self.index].offsetTop){ document.body.scrollTop = textChild[self.index].offsetTop-a; clearInterval(interval); } } },40); }; } </script> </body> </html>
大家有兴趣的可以复制下看下效果,谢谢大家浏览!
相关文章推荐
- DataGridView如何实现自动定位效果,比如我输入个数字N就能马上定位到第N行,而且滚动条也会跟着滚动!
- jQuery滚动监听,实现商城楼梯式导航、滚动监听根据滚动条所处的位置来自动更新导航项
- JS实现自动切换文字的导航效果代码
- WP8_当滚动到滚动条的70%时,自动加载数据效果实现
- JS实现自动切换文字的导航效果代码
- android自定义Gallery实现手动和自动循环滚动切换图片
- JQuery实现页面随滚动条滚动而动态加载内容的效果
- android 自动划屏效果 在这里,我们需要用到google提到的一个包——android-support-v4.jar,这个包是为了方便实现android view之间的切换,关
- Android 文字自动滚动(跑马灯)效果的两种实现方法
- 不通过JavaScript实现的自动滚动视差效果
- jQuery bxCarousel实现图片滚动切换效果
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- 使JTextArea 的滚动条随着记录的增加自动滚动到最后一行
- Scroll text - JS实现文字自动循环滚动效果
- Android 文字自动滚动(跑马灯)效果的两种实现方法
- Android 文字自动滚动(跑马灯)效果的两种实现方法
- 自动悬浮于顶部的固定菜单 --- 可以实现新浪微博顶部导航菜单一样的效果
- jQuery实现自动左右滚动效果的代码实例
- 使richtextbox文本框控件的滚动条随着文本的增加 自动向下滚动
- PPC版本Dialog的滚动条的实现且焦点切换的时候带动滚动条