原生JS楼层导航
2017-08-14 18:10
381 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>楼层导航</title> <style type="text/css"> * { margin: 0; padding: 0; } a { text-decoration: none; color: #FFF; } .navwrap { display: none; position: fixed; left: 50%; top: 50%; width: 40px; margin-left: -700px; transform: translateY(-50%); font-size: 14px; } .navwrap a { display: inline-block; width: 40px; height: 40px; border-bottom: 1px solid #FFF; line-height: 40px; background: red; text-align: center; } .navwrap a:hover, .navwrap a.active { background: #000; } .conwrap { width: 1200px; margin: 0 auto; } .conwrap h2 { width: 98%; height: 60px; padding: 0 1%; line-height: 60px; color: #FFF; font-size: 20px; } .content { width: 100%; height: 600px; box-sizing: border-box; } .banner { width: 100%; height: 800px; background: #CCC; line-height: 800px; color: #FFF; text-align: center; font-size: 150px; } </style> </head> <body> <div class="navwrap" id="navWrap"> <a href="javascript:;">1F</a><a href="javascript:;">2F</a><a href="javascript:;">3F</a><a href="javascript:;">4F</a><a href="javascript:;">5F</a><a href="javascript:;">6F</a><a href="javascript:;">7F</a><a href="javascript:;">8F</a><a href="javascript:;">顶部</a> </div> <div class="conwrap" id="conWrap"> <div class="banner">banner</div> <h2>品质</h2> <div class="content"></div> <h2>服装</h2> <div class="content"></div> <h2>爱吃</h2> <div class="content"></div> <h2>家具</h2> <div class="content"></div> <h2>图书</h2> <div class="content"></div> <h2>游戏</h2> <div class="content"></div> <h2>电脑</h2> <div class="content"></div> <h2>再逛</h2> <div class="content"></div> </div> <script type="text/javascript"> var navWrap = document.getElementById("navWrap"); var oHs = document.querySelectorAll("#conWrap h2"); var cont = document.querySelectorAll("#conWrap .content"); var oAs = document.querySelectorAll("#navWrap a"); var colorAry = ["254,254,0", "254,0,0", "254,254,0", "254,0,254", "0,254,0", "254,254,0", "0,0,254", "0,254,254"]; var txtAry = ["品质", "服装", "爱吃", "家具", "图书", "游戏", "电脑", "再逛"]; var floorAry = ["1F", "2F", "3F", "4F", "5F", "6F", "7F", "8F"]; var topAry = []; function getOffset() { for (var i = 0; i < oHs.length; i++) { var txtTop = offset(oHs[i]).top; topAry.push(txtTop); } } window.onscroll = function () { var curTop = document.body.scrollTop || document.documentElement.scrollTop; var aTop = offset(oHs[0]).top; navWrap.style.display = curTop > aTop ? "block" : "none"; getOffset(); for (var i = 0; i < oHs.length; i++) { if (curTop >= topAry[i]) { for (var j = 0; j < oAs.length - 1; j++) { oAs[j].classList.remove("active"); oAs[j].innerHTML = floorAry[j]; } oAs[i].classList.add("active"); oAs[i].innerHTML = txtAry[i]; } } }; function addCol() { for (var i = 0; i < oHs.length; i++) { oHs[i].style.backgroundColor = "rgb(" + colorAry[i] + ")"; cont[i].style.borderLeft = "1px solid rgb(" + colorAry[i] + ")"; cont[i].style.borderRight = "1px solid rgb(" + colorAry[i] + ")"; } } addCol(); function clickH(ap) { if (ap < oHs.length) { var nowTop = document.body.scrollTop || document.documentElement.scrollTop; var theTop = offset(oHs[ap]).top; if (nowTop !== theTop) { document.body.scrollTop = theTop; document.documentElement.scrollTop = theTop; } } else { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; } } for (var j = 0; j < oAs.length; j++) { ~function (a) { oAs[j].onclick = function () { clickH(a); } }(j); } function offset(curEle) { var disLeft = curEle.offsetLeft, disTop = curEle.offsetTop, par = curEle.offsetParent; while (par) { if (navigator.userAgent.indexOf("MSIE 8") === -1) {//不是标准的IE8浏览器,我们才累加边框 disLeft += par.clientLeft; disTop += par.clientTop; } disLeft += par.offsetLeft; disTop += par.offsetTop; par = par.offsetParent; } return {left: disLeft, top: disTop}; } </script> </body> </html>
相关文章推荐
- js实现楼层导航功能
- 原生Js导航高亮代码
- 一个比较靠谱的原生js导航悬浮
- 那些年原生js实现的楼层跳转
- 原生js和jquery分别实现横向导航菜单效果
- 原生js做的手风琴效果的导航菜单
- 分享 原生javaScript实现的楼层导航功能
- js 楼层导航
- JavaScript原生代码实现楼层跳跃(js部分有注释)
- 用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)
- 原生js做的手风琴效果的导航菜单
- 原生js实现吸顶导航和回到顶部特效
- js 楼层导航
- JS原生之-----带导航的轮播图jq版
- 自制一个H5图片拖拽、裁剪插件(原生JS)
- JS原生代码实现图片轮播无缝切换的一种思路
- 【整理】原生js和jQ获取窗口宽高及滚动条的方法和函数
- 原生的js实现ajax请求
- js原生扩展addClass,removeClass,hasClass
- 支持IE8及以下的,原生JS数组迭代的五种方法