zoukankan      html  css  js  c++  java
  • JS横向延时2级下拉菜单

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JS横向延时2级下拉菜单</title>
        <style>
        body{ font-size: 12px; color: #333;}
        body, ul,h2{ margin:0;padding:0;}
        li { list-style:none;}
        a{ color: #333; text-decoration: none;}
        a:hover{ color: #f00;}
        #nav { width:100%; border:1px solid #000; margin-bottom:10px;}
        #nav li{ display:inline-block; margin:10px 20px; font-size: 16px; font-weight: bold;}
        .nav li { float:left; margin: 0 5px; font-size:12px;}
        .nav { position:absolute; border:1px solid #666; padding: 5px; display:none;}
        .n1 { left:0;}
        .n2 { left:80px;}
        .n3 { left:200px;}
        </style>
    </head>
    <body>
        <div class="menu">
            <ul id="nav">
              <li><a href="#">首页</a></li>
              <li><a href="#">产品中心</a></li>
              <li><a href="#">关于我们</a></li>
            </ul>
            <ul class="nav n1">
                <li><a href="#">首页二级菜单1</a></li>
                <li><a href="#">首页二级菜单2</a></li>
                <li><a href="#">首页二级菜单3</a></li>
            </ul>
            <ul class="nav n2">
                <li><a href="#">产品中心二级菜单1</a></li>
                <li><a href="#">产品中心二级菜单2</a></li>
                <li><a href="#">产品中心二级菜单3</a></li>
                <li><a href="#">产品中心二级菜单4</a></li>
            </ul>
            <ul class="nav n3">
                <li><a href="#">关于我们二级菜单1</a></li>
                <li><a href="#">关于我们二级菜单2</a></li>
            </ul>
        </div>
        <script>
        window.onload = function(){
            var oUl = document.getElementById('nav');
            var aLi = oUl.getElementsByTagName('li');    //获取一级菜单
            var aUl = document.getElementsByTagName('ul');    //获取所有ul
            var timer = null;
            var that = '';
    
            // 循环遍历所有的一级菜单
            for(var i = 0; i < aLi.length; i++){
                // 这里加1的原因是第0个li所对应的ul是第1个ul
                aLi[i].index = i + 1;    
                // 鼠标经过,先关闭定时器,所有2级菜单隐藏,当前2级菜单显示
                aLi[i].onmouseover = function(){
                    clearTimeout(timer);
                    // 这里设置i = 1也是和上面一样,一一对应
                    for(var i = 1; i< aUl.length; i++){
                        aUl[i].style.display = 'none';
                    }
                    aUl[this.index].style.display = 'block';
                };
    
                // 鼠标移开时,先延时200毫秒,然后将2级菜单隐藏
                aLi[i].onmouseout = function(){
                    //将当前索引值保存到that变量中
                    that = this.index;
                    timer = setTimeout(function(){
                        aUl[that].style.display = 'none';
                    },200);        
                };
            }
    
            // 循环遍历所有的二级菜单【原理同上】
            for(var i = 1; i < aUl.length; i++){
                // 鼠标经过2级菜单,先清空定时器,当前显示
                aUl[i].onmouseover = function(){
                    clearTimeout(timer);
                    this.style.display = 'block';
                };
    
                // 鼠标移开2级菜单,延时200毫秒后再隐藏2级菜单
                aUl[i].onmouseout = function(){
                    that = this;
                    timer = setTimeout(function(){
                        that.style.display = 'none';
                    },200);
                }
            }
        };
        </script>
    </body>
    </html>
  • 相关阅读:
    Java基础知识强化102:线程间共享数据
    Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
    Android开发经验01:31个Android开发实战经验
    TCP/IP协议原理与应用笔记19:IP分组的交付和路由选择
    Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)
    Java(Android)编程思想笔记01:多态性的理解
    Java基础知识强化之集合框架笔记75:哈希表
    重置 linux系统后要配置的基本组件操作
    记一个空格导致的三小时排查
    windows无法启动redis服务,错误码1067
  • 原文地址:https://www.cnblogs.com/bokebi520/p/5029742.html
Copyright © 2011-2022 走看看