为了账号安全,请及时绑定邮箱和手机立即绑定

网页定位导航特效原生js没有效果

网页定位导航特效原生js没有效果

QwhateverA 2016-07-23 09:11:16
<!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>网页定位导航特效手写原生js版</title> <meta name="keywords" content="关键词" /> <meta name="description" content="关键词描述" /> <script src="js/js.js" type="text/javascript"></script> <link href="css/css.css" rel="stylesheet" type="text/css" /> <style type="text/css"> *{ margin: 0; padding: 0; } body{ font-size: 12px; line-height: 1.7; } li{ list-style: none; } #content{ width: 800px; margin:0 auto; padding:20px; } #content h1{ color:#0088bb; } #content .item{ padding:20px; margin-bottom:20px; border:1px dotted #0088bb; } #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; top:100px; left: 50%; margin-left: 400px; width: 80px; } #menu ul li a{ display: block; margin:5px 0; font-size: 14px; font-weight:bold; color:#333; width: 80px; height: 50px; line-height: 50px; text-align: center; text-decoration: none; } #menu ul li a:hover, #menu ul li a.current{ color: #fff; background-color: #0088bb; } /*hack ie6不支持position:fixed*/ *html,*html body{ background-image:url(about:blank); background-attachment: fixed; } *html #menu{ /*position: fixed;*/ position: absolute; top: expression(((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+100+'px'); } </style> <script type="text/javascript"> //根据class name 获取元素 function getByClassName( obj,cls ){ var elements = obj.getElementsByTagName("*"); var result = []; for( var i=0; i < elements.length; i++){ if(elements[i].className == cls){ result.push(elements[i]); } return result; } } function hasClass( obj,cls ){ return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); } function removeClass( obj,cls ){ if( hasClass( obj,cls )){ //remove var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); obj.className = obj.className.replace(reg,""); } } function addClass( obj,cls){ if( !hasClass( obj,cls)){ obj.className += " " + cls; } } window.onload = function(){ window.onscroll = function(){ var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop; // var top = document.documentElement.scrollTop || document.body.scrollTop; // var top = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop; var menus = document.getElementById("menu").getElementsByTagName("a"); var items = getByClassName(document.getElementById("content"),"item"); var currentId = ""; for( var i=0; i < items.length; i++){ var _item = items[i]; var _itemTop = _item.offsetTop; if( top > _itemTop - 200){ currentId = _item.id; }else{ break; } } if(currentId){ //给正确的menu下的a元素class赋值 for( var j = 0; j < menus.length; j++){ var _menu = menus[j]; var _href = _menu.href.split("#");//获取到的是网址,分割成字符串数组 if(_href[_href.length - 1] != currentId){ removeClass(_menu, "current"); }else{ addClass(_menu, "current"); } } } }; }; </script> </head> <body> <div id="menu"> <ul> <li><a href="#item1" class="current">1F 男装</a></li> <li><a href="#item2">2F 女装</a></li> <li><a href="#item3">3F 美妆</a></li> <li><a href="#item4">4F 数码</a></li> <li><a href="#item5">5F 母婴</a></li> </ul> </div> <div id="content"> <h1>地狗购物网</h1> <div id="item1" class="item"> <h2>1F 男装</h2> <ul> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> <li><a href="#"><img src="1F.jpg" alt="" /></a></li> </ul> </div> <div id="item2" class="item"> <h2>2F 女装</h2> <ul> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> <li><a href="#"><img src="2F.jpg" alt="" /></a></li> </ul> </div> <div id="item3" class="item"> <h2>3F 美妆</h2> <ul> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> <li><a href="#"><img src="3F.jpg" alt="" /></a></li> </ul> </div> <div id="item4" class="item"> <h2>4F 数码</h2> <ul> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> <li><a href="#"><img src="4F.png" alt="" /></a></li> </ul> </div> <div id="item5" class="item"> <h2>5F 母婴</h2> <ul> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> <li><a href="#"><img src="5F.jpg" alt="" /></a></li> </ul> </div> </div> </body> </html>
查看完整描述

2 回答

已采纳
?
DQJ俊逸

TA贡献5条经验 获得超4个赞

你是想实现导航栏随着你点击或者滚动鼠标时的动态样式是吧,你的代码写得很好 但是有一个地方出问题了 就是getByClassName()方法里的return result; 他不能放在for循环里面 当你第一次进去就返回结果并且不执行后面的循环了  所以你得把return result;这段代码拿出for循环

查看完整回答
反对 回复 2016-07-24
  • QwhateverA
    QwhateverA
    解释的很清楚,修改了代码之后就有效果了,谢谢你!
?
我叫丫丫

TA贡献7条经验 获得超2个赞

css样式表为什么写两个?

查看完整回答
反对 回复 2016-07-23
  • QwhateverA
    QwhateverA
    我用的是备份好的初始项目文件,所有会有css和js文件的引用方式示例。但里面的内容是空的,并不会影响。
  • 我叫丫丫
    我叫丫丫
    哦哦 太奇妙了 网页学无止境的
  • 2 回答
  • 0 关注
  • 1250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信