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