点击导航滚动条滚动到相应位置jQuery与js方法
来源:互联网 发布:有名的网络作家 编辑:程序博客网 时间:2024/05/05 08:52
代码块
/* CSS */ <style> * {margin: 0;padding: 0;box-sizing: border-box;} body {font-size: 12px;line-height: 1.7;} li {list-style: none;} #content {width: 100%;padding: 20px;} #content h1 {color: #0088bb;} #content .item {padding: 20px;margin-bottom: 20px;border: 1px dotted #0088bb;height:800px;width: 100%;} #content .item h2 {font-size: 16px;font-weight: bold;border-bottom: 2px solid #0088bb;margin-bottom: 10px;} #content .item li {display: inline;margin-right: 10px;} #content .item li a img {width: 230px;height: 230px;border: none;} #menu{position:fixed;right:0;top:200px;border:1px solid #0088bb;background-color: #fff;} #menu ul li a { display: block; font-size: 14px; font-weight: bold; color: #333; width: 80px; height: 50px; line-height: 50px; text-decoration: none; text-align: center; } #menu ul li a:hover,#menu ul li a.current {color: #fff;background: #0088bb;} </style>
<!-- HTML --> <div id="menu"> <ul class="ul_menu"> <li><a flag="item1" href="#" class="current">1F </a></li> <li><a flag="item2" href="#">2F </a></li> <li><a flag="item3" href="#">3F </a></li> <li><a flag="item4" href="#">4F </a></li> <li><a flag="item5" href="#">5F </a></li> </ul> </div> <div id="content"> <h1>测试</h1> <div id="item1" class="item"> <h2>1F </h2> <ul> <li><a href="#"><img src="" alt=""/></a></li> </ul> </div> <div id="item2" class="item"> <h2>2F </h2> <ul> <li><a href="#"><img src="" alt=""/></a></li> </ul> </div> <div id="item3" class="item"> <h2>3F </h2> <ul> <li><a href="#"><img src="" alt=""/></a></li> </ul> </div> <div id="item4" class="item"> <h2>4F </h2> <ul> <li><a href="#"><img src="" alt=""/></a></li> </ul> </div> <div id="item5" class="item"> <h2>5F </h2> <ul> <li><a href="#"><img src="" alt=""/></a></li> </ul> </div> </div>
jquery/js方法取其一
若使用jquery要引入jquery.js文件
<script> $(function(){ $(window).scroll(function(){ var scrollTop = $(document).scrollTop(); var oItem = $("#content").find(".item"); var oName = ""; $.each(oItem,function(){ var oneItem = $(this); var offsetTop = oneItem.offset().top; if(offsetTop-scrollTop < 200){ oName = oneItem.attr("id"); } }); if(oName != $(".current").attr("href")){ $(".current").removeClass("current"); $(".ul_menu").find("[flag="+ oName +"]").addClass("current"); } }); $(".ul_menu li a").click(function(){ var oA = $(this); var index = oA.parent().index(); var h = $(".item").eq(index).offset().top + 'px'; if(oA.attr("class") != "current"){ $('html,body').animate({scrollTop:h},300); } }); }); </script>
或者纯javascript不需要引入jquery.js
<script> var timer = null; var oItem = getClassname("item"); var oUl = getClassname("ul_menu")[0]; var oA = oUl.getElementsByTagName("a"); var oTop = []; for (var i = 0; i < oItem.length; i++) { oTop[oTop.length] = oItem[i].offsetTop; } window.onscroll = function(){ var oName; var scrollTop = getScrollTop(); for (var i = 0; i < oTop.length; i++) { if(oTop[i]-scrollTop<200){ oName = "item"+ (i+1); } } var oCur = getClassname("current")[0]; if(oName != oCur.getAttribute("flag")){ removeClass(oCur,"current"); for (var i = 0; i < oA.length; i++) { if(oA[i].getAttribute("flag") == oName){ addClass(oA[i],"current"); } } } } window.onload = function(){ for (var i = 0; i < oA.length; i++) { oA[i].index = i; oA[i].onclick = function(){ if(!hasClass(this,"current")){ var oCur = getClassname("current")[0]; removeClass(oCur,"current"); addClass(oA[this.index],"current"); move(oA[this.index],oTop[this.index]); } } } } // 滚动条运动 function move(obj,iTarget){ var iSpeed = 0; //速度 var iCur = 0; //当前值 clearInterval(timer); timer = setInterval(function(){ var onOff = true; //关闭定时器开关 iCur = parseInt(getScrollTop()); //获取滚动条值当前值 if(iCur > iTarget){ iSpeed = Math.floor((iTarget - iCur)/4); }else{ iSpeed = Math.ceil((iTarget - iCur)/4); } if(iCur != iTarget){ onOff = false; }else{ onOff = true; } //运动 var tt = iCur + iSpeed; window.scrollTo(tt,tt); if(onOff){ clearInterval(timer); } },30); } // 获取滚动条距离顶部距离 function getScrollTop(){ return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; } // 获取含有classname的节点 function getClassname(classnames){ var oDiv; var oBj = []; if(document.getElementsByClassName){ oBj = document.getElementsByClassName(classnames); }else{ oDiv = document.getElementsByTagName("*"); var oLen = oDiv.length; var oClass; for (var i = 0; i < oLen; i++) { oClass = oDiv[i].className; if(oClass.indexOf(classnames) != -1){ oBj[oBj.length] = oDiv[i]; } } } return oBj; } //判断某个节点是否含有class function hasClass(elements,cName){ return !!elements.className.match(new RegExp( "(\\s|^)" + cName + "(\\s|$)") ); } // 添加class function addClass(elements,cName){ if( !hasClass( elements,cName ) ){ elements.className += " " + cName; }; } // 移除class function removeClass(elements,cName){ if( hasClass( elements,cName ) ){ // replace方法是替换 elements.className = elements.className.replace( new RegExp( "(\\s|^)" + cName + "(\\s|$)" )," " ); } } </script>
完整案例https://pan.baidu.com/s/1dFDLwdV
效果:
0 0
- 点击导航滚动条滚动到相应位置jQuery与js方法
- 点击按钮滚动条下滑到相应位置
- 点击头部字母,滚动条跳转到相应的位置 jquery
- jquery点击滚动条滑动到某个位置
- jquery中点击某元素后滚动条滚动到某元素位置或底部
- jQuery根据滚动条位置加载相应的内容
- jquery操作滚动条滚动到指定位置
- jquery操作滚动条滚动到指定位置
- jquery操作滚动条滚动到指定位置
- jquery 滚动条 平滑滚动到顶部、底部、置顶位置
- jquery操作滚动条滚动到指定位置
- js滚动条位置
- jQuery实现将div中滚动条滚动到指定位置的方法
- 点击导航缓动至滚动条对应位置,滚动页面时设置对应导航的选择状态
- JQuery点击锚点滚动到相应的模块
- JS控制滚动条的位置 JS控制TextArea滚动条自动滚动到最下部
- js实现导航条等滚动后位置固定
- js/jquery获取页面大小,滚动条位置,元素位置
- leetcode-java-151. Reverse Words in a String
- 项目管理需要使用到的图表
- 电脑怎样删除警告“操作无法完成“的文件夹
- calc_ctl_code
- 编程之美-How To Organize Template Source Code
- 点击导航滚动条滚动到相应位置jQuery与js方法
- IBM MQ关闭原因 Code 2,Reason 2009 达到最大连接数
- ionic-配置及第一个程序【草稿试验版】
- Oauth2.0协议简介
- python数据挖掘领域工具包
- iOS 图片等比压缩layout
- 脱壳的常用方法
- RecyclerView学习(三)----高仿知乎的侧滑删除
- 获取本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息及网线是否插入状态