下拉菜单-js节点操作

<!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>
        ul{
            list-style: none;/*将前面的小符号去掉*/
        }
        a{
            text-decoration: none;/*将下划线去掉*/
            color: black;/*令字体颜色为黑色*/
            width: 50px;/*a的宽度和li的宽度一样*/
            display: inline-block;/*注意必须设置,否则没有办法设置宽度长度等属性*/
            text-align: center;/*让a中的文字居中显示*/
        }
        .demo{
            position: relative;
            float: left;/*设置向左浮动*/
            /*将文字设置垂直居中使用line-height将它和height的高度设置成一样*/
            line-height: 41px;/*因为demo的高度为40.8px,所以设置41px是最接近demo的高度的,是最垂直居中的设置*/
            width: 50px;
            margin-left: 1px;/*解决边框重合问题,border-collapse必须是table标签才管用*/
            /*没有设置padding就默认为0*/
        }
        .demo ul{
            display: none;/*将下拉菜单隐藏*/
            position: absolute;
            top: 41px;/*相对于父元素,即demo元素的最顶部向下移动41px,因为demo元素的高为40.8px,所以41px差不多紧挨着demo元素的底部*/
            left: 0;/*相对于父元素最左侧向右移动0px,即与父元素左边是在一条垂直线上面的*/
            padding-left: 0;/*必须设置,否则ul会向右偏移*/
            width: 100%;/*当width为100%的时候,子元素的宽度是继承父元素的宽度,不包括子元素设置的margin padding和border,所以有可能产生溢出*/  
            border-left: 1px solid #FECC5B;
            border-right: 1px solid #FECC5B;
        }
        .demo ul li{
            border-bottom: 1px solid #FECC5B;
        }
        .nav>li>a:hover{/*A>B表示选择A元素中的所有子B元素*/
            background-color: #eee;
        }
        .nav ul li a:hover{
            background-color: #FFF5DA;
        }
    </style>
</head>
<body>
    <ul class="nav">
        <li class="demo">
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>

        <li class="demo">
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li class="demo">
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li class="demo">
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        //1)导航栏里的li都要有鼠标经过的效果,所以需要循环注册鼠标事件
        //2)核心原理:当鼠标经过li里面的第二个孩子ul显示,当鼠标离开ul则隐藏
        let nav=document.querySelector('.nav');
        let lis=nav.children;//得到四个小li
        for(let i=0;i<lis.length;i++){
            lis[i].onmouseover=function(){
                this.children[1].style.display='block';//鼠标经过菜单显示
            }
            lis[i].onmouseout=function(){
                this.children[1].style.display='none';//鼠标移出,菜单隐藏
            }
        }
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值