我似乎无法想象如何在悬停时为所有顶级菜单(索引)项添加一个border-bottom:1px solid #FFF?
#menu{
padding:0;
margin:0;
position: fixed;
top: 30px;
left: 0px;
font-size: 8pt;
}
#menu ul{
padding:0;
margin:0;
}
#menu li{
position: relative;
float: left;
list-style: none;
margin: 0;
padding:0;
}
#menu li a{
width:120px;
height: 20px;
display: block;
text-decoration:none;
line-height: 20px;
background-color: #A9BBD3;
color: #FFF;
}
#menu li a:hover{
background-color: #446087;
}
#menu ul ul{
position: absolute;
top: 20px;
visibility: hidden;
}
#menu ul ul li a {
width: 115px;
padding-left: 5px;
}
#menu ul li:hover ul{
visibility:visible;
}
#menu > ul > li > a {
text-align:center;
}
<div id="menu">
<ul>
<li><a href="#nogo">File</a>
<ul>
<li><a href="#nogo">Save</a></li>
<li><a href="#nogo">Link 1-2</a></li>
<li><a href="#nogo">Link 1-3</a></li>
</ul>
</li>
<li><a href="#nogo">Edit</a>
<ul>
<li><a href="#nogo">Add</a></li>
<li><a href="#nogo">Delete</a></li>
</ul>
</li>
<li><a href="#nogo">Reports</a>
<ul>
<li><a href="#nogo">Link 3-1</a></li>
<li><a href="#nogo">Link 3-2</a></li>
<li><a href="#nogo">Link 3-3</a></li>
</ul>
</li>
</ul>
<ul>
</div>
答案 0 :(得分:3)
使用css child selector仅获取第一个:
/* NEW: This is the new style rule. */
#menu > ul > li > a:hover {
border-bottom: 1px solid #FFF;
}
#menu ul ul {
position: absolute;
top: 21px; /* <------ Had to add a pixel */
visibility: hidden;
}
演示:http://jsbin.com/aciceg/1/
资料来源:http://jsbin.com/aciceg/1/edit
答案 1 :(得分:2)
#menu ul ul{
position: absolute;
top: 21px;
visibility: hidden;
}
将此值更改为21px。
答案 2 :(得分:2)
要将边框仅放置在顶级元素上,请使用直接后代选择器来制定此规则:
#menu > ul > li > a:hover { border-bottom: 1px solid #fff; }
然后,为了使新边框可见,而不被子菜单覆盖,请将子菜单向下移动一个像素:在top: 20px
中将top: 21px
更改为#menu ul ul
。