zoukankan      html  css  js  c++  java
  • 慕课网中网页定位导航中js相关问题总结

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"/>
    <title>地狗购物网——网页定位导航效果</title>
    <style>
            * {
                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-decoration: none;
                text-align: center;
            }
    
            #menu ul li a:hover,
            #menu ul li a.current {
                color: #fff;
                background: #0088bb;
            }
    
            /*ie6 hack*/
            * 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>
        
      //定义getByClassName函数,让函数实现根据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;
        }
    
    
    //    用removeAttribute,setAttribute属性之后,这三个函数都不需要啦
        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, "");
            }
        }
        
        //定义addClaass函数,让函数实现给对象增加class 
        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 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;
                    }            
                }
            
                                 
          //请补充此处代码,给正确的menu下的a元素class赋值current
          if(currentId){
              for(var i=0;i<menus.length;i++){
                 var  _menu=menus[i];
                 var _href=_menu.href.split("#");
                 if(_href[_href.length-1]!=currentId){
                    // removeClass(_menu,"current");
                    _menu.removeAttribute("class","current");
                 }
                 else{
                    // addClass(_menu,"current");
                     _menu.setAttribute("class","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="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/53660fce0001111903990422.jpg" alt=""/></a></li>
    </ul>
    </div>
    <div id="item2" class="item">
    <h2>2F 女装</h2>
    <ul>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/5366104c0001e5c403990422.jpg" alt=""/></a></li>
    </ul>
    </div>
    <div id="item3" class="item">
    <h2>3F 美妆</h2>
    <ul>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610820001cf5b03990422.jpg" alt=""/></a></li>
    </ul>
    </div>
    <div id="item4" class="item">
    <h2>4F 数码</h2>
    <ul>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610ac00012df703990422.jpg" alt=""/></a></li>
    </ul>
    </div>
    <div id="item5" class="item">
    <h2>5F 母婴</h2>
    <ul>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    <li><a href="#"><img src="http://img.mukewang.com/536610cd0001f34603990422.jpg" alt=""/></a></li>
    </ul>
    </div>
    </div>
    </body>
    </html>

    图为改进后的代码

    1.js中ie8及以下浏览器不支持getElementsByClassName,

    (1)JS原生代码里addClass添加类,要带空格

        举例子 :

      <div class="item1 item2"> </div>

         上面是一个div,这个div的样式已经有两个,所以你再添加class的时候就需要加空格后再加入新的样式。

        最后得到: <div class="item1 item2 new"> </div>

    (2)移除类:不能直接让 obj.className="";因为一个对象可能有很多类。要用如下空格替换要移除的正则表达式。

       obj.className = obj.className.replace(reg, "");

    2.var result = [ ];定义一个空数组。

    3.window.onscroll = function(){}; 当窗口滚动时,那么执行以下函数。如果没有这一行,那么,窗口滚动没有触发任何的函数,相当于没用。window.scroll就是触发窗口滚动事件。

    4._menu的href属性也可以直接用getAttribute('href')    _menu.getAttribute('href')

     js可以用 setAttribute('class','className')

  • 相关阅读:
    .net core 灵活读取配置文件
    SUSE12SP3-Mysql5.7安装
    SUSE12Sp3-MongoDB安装
    SUSE12Sp3-Supervisor 守护.net core进程
    SUSE12Sp3-Nginx安装
    SUSE12Sp3-.NET Core 2.2.1 runtime安装
    搭建consul 集群
    SUSE12Sp3安装配置.net core 生产环境(1)-IP,DNS,网关,SSH,GIT
    使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
    使用MagicOnion实现gRPC
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/6744784.html
Copyright © 2011-2022 走看看