菜单项悬停时的Css显示子菜单

时间:2014-03-26 22:50:21

标签: html 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 styles

#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;
}

1 个答案:

答案 0 :(得分:2)

由于您为text-indent:-9000px设置了ul#menu li,因此未显示子菜单项,这意味着文本缩进将应用于ul {{1}下的所有li项目}}。要显示子菜单项,请将以下样式应用于子菜单li

#menu

OR

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