子菜单纯css和html消失了

时间:2011-12-19 23:02:41

标签: html css menu

我有一个菜单,里面有一个子菜单。当我悬停主菜单时出现子菜单,但是一旦我尝试进入子菜单,它就会在大部分时间消失。只有我非常快,我才能在它消失之前达到它。

HTML:

 <header>   
<div class="wrapper">
        <a href="#" id="logo" class="fl"><img src="images/logo.png" width="125" height="20" alt=""></a>
        <nav class="fl">
            <ul >
                <li> <a href="#" class="selected">Target Groups</a>
                <ul>
                    <li><a href="">Manage Target Groups</a></li>
                    <li><a href="">Create Target Group</a></li>
                </ul>   
                </li>
                <li><a href="#">Activity</a></li>
                <li><a href="#">Reports</a></li>
                <li><a href="#">Settings</a></li>
                <li><a href="#">Admin</a></li>
            </ul>
        </nav>
            </div>
            <!-- end .wrapper -->
    </header>

CSS:

header{
margin-top: 30px;
background: url(../images/header-bg.png) no-repeat; 
width: 942px;
height: 76px;
padding: 27px 25px 5px;
}
header .wrapper{
    border-bottom: 1px solid #e5e5e5;
    float:left;
    width: 862px;
    padding: 0 40px 5px;        
    position:relative;
}
header nav{
    margin-left: 45px;          
}
header nav ul{
    z-index: 100;
}
header nav ul li{
    display: inline;    
    margin-right: 35px;
    line-height: 20px;
    z-index: 100;
}
header nav ul li ul{
    display: none;
    position:absolute;      
    width: 962px;
    left: 0;
    top: 40px;  
}

header nav ul li ul li{
    float: left;    
}

header nav ul li:hover ul{
    display:block;  
}
header nav ul li a{
    font-size:16px;
    color: #5b666a;
    text-decoration: none;  
    padding: 5px 10px;
}
header nav ul li a.selected,header nav ul li a:hover{
    background: #657073;
    color: white;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px; 
}

我真的被困住了,请帮忙......

2 个答案:

答案 0 :(得分:2)

为了达到你想要的效果,最好使用padding-top作为你的子菜单,而不是绝对定位(使用后者你会在菜单和子菜单之间找到'空'空间,导致鼠标移出) :

http://jsfiddle.net/BAzx7/

编辑:我将position:relative;添加到ul li,将z-index添加到ul li ul,否则子菜单将位于主菜单上 - 并将其禁用..

http://jsfiddle.net/BAzx7/1/

答案 1 :(得分:0)

我还用hoverIntent修正了这个问题。当时是一个独家IE漏洞,但是很容易解决。

http://cherne.net/brian/resources/jquery.hoverIntent.html

这就是我的功能。

    $('.main-nav > ul > li').hoverIntent({
        timeout: 300,
        over: function () {
            $(this).addClass('hover')
        },
        timeout: 300,
        out: function () {
            $(this).removeClass('hover')
        }
    });

我的标记与吮吸鱼菜单的儿子结构相同。