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>
时间: 2024-08-10 11:02:32

JS横向延时2级下拉菜单的相关文章

学习笔记-php简单联级下拉菜单输出-2016.4.7

在使用联级输出的时候一到一个模型里面的小问题,之前不注意,模型里不同的方法每次得到的数据交给控制器的时候,我都以数组的形式输出,但是这个数组我作为私有字段,到时今天做联级菜单输出的时候,不能正常输出,最后不得不吧这个私有字段去掉,在每个方法的作用域里面分别初始化一个数组,这样就互不干扰!(还是考虑的太少,太异想天开!) 不说了,贴代码 html部分 <select name="nav"> <option>请选择一个栏目类别</option> {$na

简单的单级下拉菜单实现

效果预览 这里用纯CSS实现一个简单的单级下拉菜单,鼠标划过菜单标题时显示下拉菜单. 基本思路 在菜单处于光标之下时显示菜单,其余时候隐藏.这个过程首先得想到 :hover 伪类来实现,但是直接的利用伪类还不行,因为普通状态下菜单隐藏了,没办法触发 :hover ,不过下拉菜单隐藏了不是还有菜单标题么,菜单标题处于光标之下时显示菜单就能够显示出来了,但是鼠标移到菜单上的时候下拉菜单又会消失,这个时候想到给下拉菜单也加上 :hover 显示自身,但是万一脑洞大开,要做分体菜单怎么办,这个时候把它放

分别用js 和 html/css实现下拉菜单特效

在网站的制作过程,我们常常会遇到导航栏中会出现一级菜单,二级菜单这样的现象,到底如何实现呢?接下里我们用两种方法来实现: 1.用js来实现此效果: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css">

JS对于导航栏、下拉菜单以及选项卡的切换操作、大图轮播(主要练习对于样式表的操作)

1.导航拦以及下拉菜单 css样式表代码 .div1 { width: 100px; height: 30px; background-color: red; float: left; margin-right: 10px; } .div1-div { width: 100%; height: 400px; background-color: green; margin-top: 30px; display: none; } JS脚本代码 <!DOCTYPE html> <html xm

用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)

这个导航下拉菜单需要实现的功能是:下拉菜单的宽度与浏览器视口的宽度一样宽:一级导航只有两项,当鼠标移到一级导航上的导航项时,相应的二级导航出现.在本案例中通过改变二级导航的高度来实现二级导航的显示和消失.为了便于理解我画了一个图,如下: 在这个案例主要用到的知识有:设置定时器,清除定时器,mouseout和mouseover事件,另外还有css中position相关知识.本案例分为两部分讲解.第一部分html和css,第二部分js. 一. html和css 将导航这个导航条包裹在一个div中,这

js 点击按钮显示下拉菜单

<li> <a id = "rank" onclick="showGroup()"></a></li><li id = "buttonGroup" style="display: none"> <a href="#"> </a> <a href="#"> </a> </li&

18-5-二级下拉菜单

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body { font-family: "Microsoft YaHei", serif; } body, dl, dd, p, h1, h2, h3, h4, h5, h6 { m

纯css+js下拉菜单实例代码

纯css+js下拉菜单实例代码 分享一个css+js下拉菜单代码,js+css实现的简单下拉菜单,兼容性不错. 例子:<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <

Django分析之三级下拉菜单选择省/市/县

今天遇到了一个一直想做却没有机会去做的功能,今天完成了便记录下来. 那这次是具体是个什么功能呢?其实还是很简单的效果,就是在用户注册的时候可以选择省/市/县,很简单的一个小功能. 那现在就开始了~首先我们要在数据库中先建一个表,用来保存全国的省/市/县信息,下面是表的结构: CREATE TABLE IF NOT EXISTS "china_regionalTable" ( "id" integer NOT NULL, "name" varcha