2级CSS下拉菜单 - 显示:无不起作用

时间:2012-07-07 12:14:30

标签: css drop-down-menu

我设计了一个2级CSS下拉菜单。除了一件事以外,一切都很完美。我想要它,以便当我将鼠标悬停在顶部菜单项上时,会出现第一级下拉菜单,当我将鼠标悬停在第一级菜单中的项目时,会出现第二级菜单项。但问题是,当我将鼠标悬停在顶部菜单上时,所有子菜单都会出现。这意味着display: none不起作用。为什么会这样,解决方案是什么?

jsfiddle.net

HTML代码

<ul id="nav">
 <li><a href="/ueber_uns.htm">About Us</a>
  <ul>
    <li><a href="#">Who We Are</a></li>
    <li><a href="#">Our Goals</a></li>
    <li><a href="#">Our Team</a></li>
    <li><a href="#">Press</a>
     <ul>
      <li><a href="#">2006</a></li>
      <li><a href="#">2007</a></li>
      <li><a href="#">2008</a></li>
     </ul>
    </li>
   <li><a href="#">Impressum</a></li>
  </ul>
 </li>
</ul>

CSS代码

ul#nav 
{
margin: 0;
padding: 0;
list-style: none;
text-align: center;
/*display: table-cell;
vertical-align: middle;*/
}
ul#nav li
{
float: left;
position: relative;
font-size: 16px;
background-color: orange;
}
ul#nav li li
{
font-size: 14px;
}
ul#nav ul 
{
margin: 0;
padding: 0;
list-style: none;
text-align: left;
display: none;
}
ul#nav li:hover ul 
{
display: block;
position: absolute;
}
ul#nav a:link, ul#nav a:visited
{
display: block;
width: 110px;
padding: 10px 5px;
text-decoration: none;
color: #000;
}
ul#nav ul a:link, ul#nav ul a:visited 
{
width: 135px;
}
ul#nav a:hover, ul#nav a:active
{
color: #fff;
}
ul#nav ul ul
{
position: absolute;
top: 0;
left: 100%;
display: none;
}
ul#nav ul li:hover ul
{
display: block;
}

3 个答案:

答案 0 :(得分:2)

更改此

ul#nav li:hover ul 
{
display: block;
position: absolute;
} 

到这个

ul#nav li:hover > ul 
{
display: block;
position: absolute;
}

Example

基本上ul#nav li:hover > ul的作用是它只针对辅助下拉菜单,因此当您将鼠标悬停在我们周围时,只会显示第二级菜单,而隐藏第三级菜单。

答案 1 :(得分:1)

li:hover ul

将适用于所有后代ul。将其更改为:

li:hover>ul

申请直系后代。

答案 2 :(得分:0)

使用直接子选择器>

http://jsfiddle.net/2J4e3/2/