子菜单立即出现在页面上,但当鼠标移过主菜单项时消失

时间:2014-05-14 16:20:18

标签: html css menu submenu

希望有人可以帮我解决这个问题...我不使用js,只需要css和html。我已经建立了一个很好的菜单,但我的问题是当我尝试添加子菜单时。我希望它被隐藏,直到有人超过主菜单,然后我想让它下降。我现在获得的效果是我的子菜单立即加载它上面的主菜单然后当我浏览主菜单项时它会消失。我尝试了一些不同的东西,比如在这里和那里添加z-index,但到目前为止还没有运气......

HTML:

<div id="container">
    <div id="menu">
        <ul id="nav">
            <ul>
                <li id="menu1"><a href=""><h2>Home</h2></a></li>
                <li id="menu2"><a href=""><h2>Sign-Up</h2></a></li>
                <li id="menu3"><a href=""><h2>Packages</h2></a>
                    <ul>
                        <li><a href="#">Gold</a></li>
                        <li><a href="#">Platinum</a></li>
                    </ul>
                </li>
                <li id="menu4"><a href=""><h2>About Us</h2></a></li>
                <li id="menu5"><a href=""><h2>Contact</h2></a></li>
            </ul>
        </ul>
    </div>

CSS:

* {
    margin:0px;
    padding:0px;
} 

.form-textbox{
    height:100px;
    font-size:100px;
}

#fieldset{
    width:300px;
}

#fieldst p{
    clear:both;
    padding:5px;
}

#legend{
    font-size:16px;
}

label[for="username"] {
    color:#FFFFFF;
    font-weight:bold;
    clear:both;
    text-align:left;
}

label[for="password"] {
    color:#FFFFFF;
    font-weight:bold;
    clear: both;
    text-align:left;
    margin-top:40px;
}

body {
    padding-top:0px;
    background-color:#01111d;
    color:#FFF;
    font-family:verdana, arial, sans-serif;
    text-align: left;
    letter-spacing: 1px;
}

a {
    color: #FFF;
    font-size: 14px;
}

a:hover {
    color:#efae00;
}  //01a9c0

.more {
    float:left;
}

.clear {
    clear:both;
}

p {
    margin: 20px 0px 20px 0px;
    line-height: 16px;
    font-size: 14px;
}

#container {
    margin: 0px auto;
    width: 873px;
}

#menu {
    background-image:url(images/menu.gif);
    width:862px;
    height:90px;
    position:relative;
    z-index:99999;
}

#menu li{
    position:absolute;
    top:40px;
    list-style-type:none;
}

#menu1 {
    left:110px;
}

#menu2 {
    left:255px;
}

#menu3 {
    left:400px;
}

#menu4 {
    left:540px;
}

#menu5 {
    left:680px;
}

#menu a {
    font-family: verdana, arial, sans-serif;
    font-size:12px;
    font-weight:bolder;
    color:#FFFFFF;
    text-decoration:none;
    text-transform:uppercase;
}

#menu a:hover {
    color:#efae00;
} 

#menu li > #nav li ul

#nav li ul {
    position:absolute; 
    display:none;
} 

#nav li:hover ul { 
    display: none;
}


#nav li ul li { 
    float: none; 
    display: block;
}

#nav li ul li a { 
    width: 118px; 
    position: absolute; 
    border-left: 1px solid black; 
    border-right: 1px solid black; 
    border-bottom: 1px solid black; 
    background: #333; 
    color: #fff; 
}

#nav li ul li a:hover { 
    background: #066; 
    color: #000; 
}

Jsfiddle:http://jsfiddle.net/bC7f2/

1 个答案:

答案 0 :(得分:1)

因此,我们可以在您的代码中更改一些内容。首先是你应该而且不应该展示的东西。为了简短起见,我对CSS代码做了一些调整,确保你得到了你想要使用的确切区域。以下是新的选择器名称:

#nav ul li:hover ul #ITEM NAME HERE

#nav li ul # ITEM NAME HERE

接下来,您首先将下拉菜单显示为&#34; display:block;&#34; ,这意味着下拉菜单中的任何内容都将自动从页面开始,实际上应该设置为&#34; display:none;&#34;,以便在您悬停之前它不可见。这是您的最终产品:

#nav ul li:hover ul #item1 {
    display: none;
    position: absolute;
    z-index: 100;
    display: inline-block;
    top: 20px;
}
#nav ul li:hover ul #item2 {
    /* display: none; */
    position: relative;
    z-index:1;
    display: block;
    top: 13px;

}
#nav ul li:hover ul #item3 {
    /* display: none; */
    position: relative;
    z-index:0;
    display: block;
    top: 27px;

}
#nav li ul #item1 {
    z-index:100;
    display:none;
}
#nav li ul #item2 {
    z-index:1;
    display:none;
}
#nav li ul #item3 {
    z-index:0;
    display:none;
}

我还在这里添加了一个边距,将子菜单连接到普通菜单,否则它会非常奇怪。您的最终产品可以找到here

我建议您查看一些有关如何使用CSS创建下拉菜单的特定教程,或者在下拉菜单中使用jQuery(它会使它更干净,更易于使用)。

编辑:这是一个子菜单显示的更新,我还添加了另一个子菜单,以准确显示项目的工作方式以及相应的CSS {{3} }。

为了打破我的补充,我会把它快速分成几个部分:

Z-Index:这几乎是项目出现的顺序,数字越高,列表中的数字越高。以下是更多here的资源。

定位:我使用了绝对和相对定位的组合。这非常脏,我不知道是否有人会建议在适用的网络编程世界中使用它。最好只使用绝对定位,但这仍然可以完成你的工作。可以找到更多信息information

顶部:这是非常自我解释的,但它确实是距离最顶层对象的距离。有关这方面的更多信息,请参见here