zoukankan      html  css  js  c++  java
  • 弹出菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    
    <style>
    *{ margin:0; padding:0; font-family:"微软雅黑"; font-size:18px;}
    a{text-decoration:none;}
    
    .popmenu { 400px; margin:50px auto;}
    
    .popmenu ul { background:#B10000; height:25px; }
    .popmenu ul li{float:left; 100px; position:relative;list-style:none;}
    
    .popmenu ul li a{display:block;height:25px; line-height:25px;  text-align:center; color:white;}
    .popmenu ul li a:hover{ background:#79951A; }
    
    .popmenu ul li div{display:none; line-height:30px;100px; background:#528DF1; position:absolute;}
    </style>
    
    </head>
    
    <body>
    <div class="popmenu" id="popmenu">
        <ul>
            <li>
                <a class="first" href="#">菜单1</a>
                <div>
                    <a href="http://www.baidu.com">吃饭</a>
                    <a href="http://www.qq.com">睡觉</a>
                    <a href="http://www.baidu.com">吃饭</a>
                    <a href="http://www.qq.com">睡觉</a>  
                    <a href="http://www.baidu.com">吃饭</a>
                    <a href="http://www.qq.com">睡觉</a>
                    <a href="http://www.baidu.com">吃饭</a>
                    <a href="http://www.qq.com">睡觉</a>                           
                </div>
            </li>
            <li>
                <a href="#">菜单2</a>
                <div>
                    <a href="http://www.baidu.com">吃饭</a>
                    <a href="http://www.qq.com">睡觉</a>
                    <a href="http://www.baidu.com">打豆豆</a>
                </div></li>
            <li><a href="#">菜单3</a><div>content3</div></li>                
            <li><a href="#">菜单4</a><div>content4</div></li>                
        </ul>
    </div>
    
    </body>
    </html>
    <script>
    
    //获取firstchild
    function firstChild(elem)
    {
        var node = elem.firstChild ? elem.firstChild : null;
        while(node && node.nodeType != 1)
        {
            node = node.nextSibling;
        }
        return node;
    }
    
    //获取下一个同辈元素(ie下回忽略空白文节点)
    function next(elem)
    {
        var node = elem.nextSibling ? elem.nextSibling : null;
        while(node && node.nodeType != 1 )
        {
            node = node.nextSibling;
        }
        
        return node;
    }
    
    //获取上一个同辈元素(ie下回忽略空白文节点)
    function prev(elem)
    {
        var node = elem.previousSibling ? elem.previousSibling : null;
        while(node && node.nodeType != 1 )
        {
            node = node.previousSibling;
        }
        
        return node;
    }
    
    function contains(a,b)
    {
        if(document.defaultView)
        {
            return !!( a.compareDocumentPosition(b) & 16 );
        }else{
            return a != b && a.contains(b);     
        }
    } 
    
    /**
    children:只有元素节点
    childNodes:所有节点
    两个都不存在兼容性问题
    */
    
    
    var lis = document.getElementById('popmenu').getElementsByTagName('li');
    for(var i=0;i<lis.length;i++) 
    {
        lis[i].onmouseover = function(evt){
            var evt = evt || window.event;
            evt.relatedTarget = evt.relatedTarget || evt.fromElement;
    
            if(!evt.relatedTarget || !contains(this, evt.relatedTarget))
            {
                //console.log('over')
                next(firstChild(this)).style.display = 'block';
            }
        }
        
        lis[i].onmouseout = function(evt){
            var evt = evt || window.event;
            evt.relatedTarget = evt.relatedTarget || evt.toElement;
            
            if( !evt.relatedTarget || (evt.relatedTarget && !contains(this, evt.relatedTarget)))
            {
                //console.log('out')
                next(firstChild(this)).style.display = 'none';
            }
        }
    }
    </script>

    效果图:

      

  • 相关阅读:
    苹果新的编程语言 Swift 语言进阶(五)--控制流
    苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型
    苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算
    苹果新的编程语言 Swift 语言进阶(二)--基本类型
    第一篇 android架构是如何满足设计目标的?
    第三篇 android 应用开发模式之MVC模式及Observer模式
    第二篇 android应用开发模式之模板模式
    为什么带网格(mesh)的模型添加了刚体Rigidbody和MeshCollider,还是会从地板穿过去?
    Mecanim动画模型规范
    HTC Vive 体验的折腾经历
  • 原文地址:https://www.cnblogs.com/siqi/p/3284000.html
Copyright © 2011-2022 走看看