2014-03-26 231 views
1

我有一个菜单,其中每个菜单项都有一个背景图像,当将鼠标悬停在菜单项上时,通过滚动相应的背景图像来加下划线。现在我还想显示子菜单(带有文本项目,没有背景图像),但是子菜单文本没有显示,如果我设置子菜单的边框,我可以看到没有适当内容的矩形。我没有看到代码有什么问题,请帮我纠正(并改进)它。菜单项悬停的Css显示子菜单

// HTML结构

<div id="menu_top"> 
      <ul id="menu"> 
       <li class="home"><a href="#" class="home">Home</a></li> 
       <li class="menu"><a href="#" class="menu">Menu</a> 
        <ul class="submenu"> 
          <li>item1</li> 
          <li>item2</li> 
          <li>item3</li> 
        </ul> 
       </li> 
       <li class="contact"><a href="#" class="contact">Contacts</a></li> 
       <li class="about"><a href="#" class="about">About</a></li> 
      </ul> 
     </div> 

// CSS样式

#menu_top 
{ 
    margin: 0 auto; 
    text-align: center; 
    background: url(../images/nav-bg.jpg) no-repeat 0 0; 
    height: 150px; 
     width: 815px; 
} 

ul#menu 
{ 
    list-style: none; 
    margin: 0; 
    position: relative; 
} 

ul#menu li 
{ 
    background-position: left top; 
    background-repeat: no-repeat; 
    display: block; 
    text-indent: -9000px; 
    position: absolute; 
    outline: none; 
} 

/*Menu items*/ 

// all menu items similar to this ... 

ul#menu li.menu 
{ 
    background-image: url(../images/nav-menu.png); 
    height: 50px; 
    width: 116px; 
    top: 30px; 
    left: 380px; 
} 


/* underline menu items*/ 
ul#menu li:hover 
{ 
    background-position: left bottom; 
} 

#menu >li ul 
{ 
    position:absolute; 
    left:0px; 
    top:50px; 
    width:100%; 
} 

#menu >li ul>li 
{ 
    list-style:none; 
} 

#menu >li:hover > ul 
{ 
    display:block; 
} 
+0

请http://jsfiddle.net – ShibinRagh

+0

你们是不是要做到这一点http://jsfiddle.net/WJ876/ – ShibinRagh

回答

2

不被显示的子菜单项,因为你设置了一个text-indent:-9000pxul#menu li,这意味着文本缩进将适用到ul #menu下的所有li项目。要显示的子菜单项应用以下样式子菜单里

#menu >li ul>li 
{ 
    list-style:none; 
    text-indent:0; 
    position:relative; // this is set to remove position absolute set for ul#menu li 
} 

OR

#menu .submenu li{ 
    position:relative; 
    text-indent:0; 
} 
+0

谢谢,那正是我想要的 –