Js 笔记(下拉菜单简化实例)

110 阅读1分钟

//新浪下拉菜单简化版 以及新添元素

//----------style--------------------------- .ul, /* li { list-style: none; } */

    a {
        text-decoration: none;

    }

    .nav {
        display: flex;
        width: 100%;

        /* height: 30px; */
        /* background-color: red; */
    }

    .nav li {
        flex: 1;
        /* height: 100%; */
        line-height: 40px;
        /* border:1px solid #fecc5b; */
    }
    
    .nav li a {
        width: 100%;
        display: inline-block;
        margin: 0 auto;
        text-align: center;
        color: #333;
        
    }

    .nav li a:hover {
        background-color: #eee;
    }

    .nav .con {
        display: none;
        width: 100%;
        /* display: flex; */
        justify-content: center;
        flex-direction: column;
        align-items: center;
        margin-left: -13%;
    }

    .nav .con li {
        width: 100%;
        height: 100%;
        border-left: 1px solid #fecc5b;
        border-bottom: 1px solid #fecc5b;
    }

    .nav .con li a {
        width: 100%;
        display: inline-block;
        margin: 0 auto;
        text-align: center;
        color: #333;
    }

------------------style------------------------

------------------body-------------------------

span

    -------------------------script------------------------

        // 新浪下拉菜单案例
        var nav = document.querySelector('.nav');
        var lis = nav.children;//得到四个li
        for (var 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';
            }
        }
    
    
        // // 兄弟节点
        // console.log(element.nextSibling);
        var div = document.querySelector('div');
        console.log(div.nextSibling);    //获取下一个任意类型的兄弟节点
        console.log(div.previousSibling);//获取上一个任意类型的兄弟节点
        console.log(div.nextElementSibling);    //获取下一个元素类型的兄弟节点(IE9以上才支持)
        console.log(div.previousElementSibling);//获取上一个兄弟元素节点(IE9以上才支持)
        // 需解决兼容性问题需要封装兼容性函数 (如下)
        function getNextElementSibling(element) {
            var el = element;
            while (el = el.nextSibling) {
                if (el.nodeType === 1)
                return el;
            }
            return null;
        }
    
        // 创建节点  
        var li = document.createElement('li');
        // 添加节点 node.appendChild(child)  node是父级  child是子级  类似数组中的push与css中的after伪元素
        var ul = document.querySelector('ul');
        ul.appendChild(li);
    
        // 添加节点 node.insertBefore(child,指定元素) 在第一个头部添加 先创建再添加
        var lili = document.createElement('li');
        ul.insertBefore(lili,ul.children[0]);
    

    -------------------script----------------------------------- -------------------body-------------------------------------