一、案例描述

鼠标经过导航栏出现下拉菜单。

二、案例效果演示

请添加图片描述

三、案例局部代码

css代码:
<style>
   * {
	   margin: 0;
	   padding: 0;
	  }
   
   a {
       text-decoration: none;
       color: #000;
   }
   
   ul {
       list-style: none;
   }
   
   .nav {
       text-align: center;
       overflow: hidden;
   }
   
   .nav>li {
       float: left;
   }
   
   .nav>li>a {
       border: 1px solid rgb(199, 186, 6);
       display: block;
       width: 130px;
   }
   
   .nav ul {
       background-color: rgb(199, 186, 6);
       line-height: 30px;
       display: none;
   }
   
   .nav ul>li:hover {
       background-color: yellow;
   }
</style>
html代码:
<div id="content">
    <ul class="nav">
        <li>
            <a href="#">动漫</a>
            <ul>
                <li><a href="#">《鬼灭之刃》</a></li>
                <li><a href="#">《进击的巨人》</a></li>
                <li><a href="#">《时光代理人》</a></li>
                <li><a href="#">《时光代理人》</a></li>
            </ul>
        </li>
        <li>
            <a href="#">歌曲</a>
            <ul>
                <li><a href="#">《空城》</a></li>
                <li><a href="#">《真相是真》</a></li>
                <li><a href="#">《真相是假》</a></li>
                <li><a href="#">《遇见》</a></li>
            </ul>
        </li>
        <li>
            <a href="#">电影</a>
            <ul>
                <li><a href="#">《少年的你》</a></li>
                <li><a href="#">《奇迹笨小孩》</a></li>
                <li><a href="#">《长津湖》</a></li>
            </ul>
        </li>
    </ul>
</div>
js代码:
<script>
  // 获取元素
     var nav = document.querySelector('.nav');
     var lis = nav.children;
     console.log(nav);
     // 循环注册事件
     for (var i = 0; i < lis.length; i++) {
         lis[i].onmouseover = function() {
             this.children[1].style.display = 'block'; //里面的ul是他的第二个孩子
         }
         lis[i].onmouseleave = function() {
             this.children[1].style.display = 'none'; //里面的ul是他的第二个孩子
         }
     }
</script>

四、案例整体代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>新浪微博下拉菜单</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        a {
            text-decoration: none;
            color: #000;
        }
        
        ul {
            list-style: none;
        }
        
        .nav {
            text-align: center;
            overflow: hidden;
        }
        
        .nav>li {
            float: left;
        }
        
        .nav>li>a {
            border: 1px solid rgb(199, 186, 6);
            display: block;
            width: 130px;
        }
        
        .nav ul {
            background-color: rgb(199, 186, 6);
            line-height: 30px;
            display: none;
        }
        
        .nav ul>li:hover {
            background-color: yellow;
        }
    </style>
</head>

<body>
    <div id="content">
        <ul class="nav">
            <li>
                <a href="#">动漫</a>
                <ul>
                    <li><a href="#">《鬼灭之刃》</a></li>
                    <li><a href="#">《进击的巨人》</a></li>
                    <li><a href="#">《时光代理人》</a></li>
                    <li><a href="#">《时光代理人》</a></li>
                </ul>
            </li>
            <li>
                <a href="#">歌曲</a>
                <ul>
                    <li><a href="#">《空城》</a></li>
                    <li><a href="#">《真相是真》</a></li>
                    <li><a href="#">《真相是假》</a></li>
                    <li><a href="#">《遇见》</a></li>
                </ul>
            </li>
            <li>
                <a href="#">电影</a>
                <ul>
                    <li><a href="#">《少年的你》</a></li>
                    <li><a href="#">《奇迹笨小孩》</a></li>
                    <li><a href="#">《长津湖》</a></li>
                </ul>
            </li>
        </ul>
    </div>
    <script>
        // 获取元素
        var nav = document.querySelector('.nav');
        var lis = nav.children;
        console.log(nav);
        // 循环注册事件
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function() {
                this.children[1].style.display = 'block'; //里面的ul是他的第二个孩子
            }
            lis[i].onmouseleave = function() {
                this.children[1].style.display = 'none'; //里面的ul是他的第二个孩子
            }
        }
    </script>
</body>

</html>

五、总结

索引值都是从0开始,所以children[1]代表的是第二个孩子。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐