您好我无法弄清楚如何更改CSS菜单子项的大小(父项具有图像背景,子项应具有背景颜色)。 我试过像:
ul > li > a:hover {
display:inline-block;
background:#000;
float:left;
width:120px;
height:25px;
}
但它与其他元素混合在一起。能帮我解决一下吗?
HTML:
<div id="menu">
<ul>
<li><a id="menu1" href="#">Parent1</a></li>
<li><a href="#">Parent2</a>
<ul>
<li><a href="#">Child1</a></li>
<li><a href="#">Child2</a></li>
<li><a href="#">Child3</a></li>
</ul>
</li>
<li><a href="#">Parent3</a></li>
<li><a href="#">Parent4</a></li>
<li><a href="#">Parent5</a></li>
</ul>
</div>
CSS:
#menu {
position:absolute;
top:133px;
left:0px;
width:900px;
height:50px;
}
ul {
font-family: Arial, Verdana;
font-size: 14px;
margin: 0;
padding: 0;
list-style: none;
}
ul li {
display: block;
float: left;
}
li ul {
display: none;
}
ul li a {
display: block;
text-decoration: none;
color: #ffffff;
/*padding: 5px 15px 5px 15px;*/
background-image: url(../images/menu1.png);
white-space: nowrap;
width:178px;
height:50px;
}
ul li a:hover {
background: #BBBBBB;
}
li:hover ul {
display: block;
position: absolute;
left:0px;
}
li:hover li {
float: left;
font-size: 11px;
}
li:hover a {
background: #3b3b3b;
}
li:hover li a:hover {
background: #CCC;
}
非常感谢您的帮助!
答案 0 :(得分:2)
要为子子菜单添加背景颜色:
ul li ul li {
// rules
}
您还可以向列表项添加类,以使其更易于管理。例如,您可以在子菜单的ul中添加一个类:
<li><a href="#">Parent2</a>
<ul class="sub-menu">
<li><a href="#">Child1</a></li>
<li><a href="#">Child2</a></li>
<li><a href="#">Child3</a></li>
</ul>
</li>
然后你可以将css简化为:
.sub-menu li {
display:inline-block;
background:#000;
float:left;
width:120px;
height:25px;
}
答案 1 :(得分:2)
希望以下更改对您有用。这是fiddle link。以下是你的css chagnes
#menu {
/*position:absolute;
top:0;
left:0px;*/
width:900px;
height:22px;
background-color:#000;
}
ul {
font-family: Arial, Verdana;
font-size: 14px;
line-height:22px;
margin: 0;
padding: 0;
list-style: none;
text-align:center;
}
ul li {
display: block;
float: left;
position:relative;
}
ul li a {
display: block;
text-decoration: none;
color: #ffffff;
/*padding: 5px 15px 5px 15px;*/
background-image: url(../images/menu1.png);
white-space: nowrap;
width:178px;
line-height:22px;
}
ul li:hover a {
background: #BBBBBB;
}
ul li ul {
display: none;
widht:200px;
position:absolute;
left:0;
top:22px;
}
ul li ul li {
float: none;
font-size: 11px;
}
ul li ul li a {
background: #3b3b3b;
background-image:none!important;
}
ul li ul li a:hover {
background: #CCC;
}
ul li:hover ul {
display: block;
position: absolute;
left:0px;
}
答案 2 :(得分:0)
保持相同的宽度是很好的,这样你就可以避免这种奇怪的动作。
试试这个
ul li ul li a:hover {
display:block;
background:#000;
float:left;
width:178px;
height:25px;
}
<强> DEMO 强>
答案 3 :(得分:0)
我不知道你希望结果看起来如何,但你也可以在css中使用+选择器:
ul > li > a:hover+ {
display:inline-block;
background:#000;
float:left;
width:120px;
height:25px;
}
在a:hover之后看到的+选择器意味着将选择a:hover-tag之后的下一个元素,在这种情况下它将是ul
如果你想让ul成为一个列表而不是像这样的扁平列表,你也可以用+ ul指定元素:
ul > li > a:hover+ul {
display:inline-block;
background:#000;
float:left;
width:120px;
height:25px;
}
像这样,你知道你只会影响悬停的元素旁边的元素
答案 4 :(得分:0)
解决方案
ul > li:hover > li > a {
display:inline-block;
background:#000;
float:left;
width:120px;
height:25px;
}
可以按要求
ul > li:hover li a { }