我有一个菜单列表如下:
<div id="menubar">
<ul class="menulist">
<li><a href="#">Home</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
我要做的是,最初,菜单项的字体颜色为深灰色。但是当用户将鼠标悬停在任何菜单项上时,该特定项目仍为深灰色,但其余项目将变为浅灰色。
我有以下CSS。
#menubar a {
color: #202021;
display: block;
padding: 6px;
text-decoration: none;
}
#menubar a:hover {
display: block;
padding: 6px;
background-color: #97979B;
border-radius: 3px;
font-weight: bold;
}
#menubar .menulist:hover {
color: #747478;
}
但color
中给出的.menulist:hover
不会应用于悬停项目以外的菜单项,而color
以外的属性会应用于菜单的 rest 我悬停在任何菜单项上的项目。我跟着this提出了类似要求的问题。
如何使用纯CSS获得此行为?
答案 0 :(得分:3)
按如下方式更改两个选择器:
#menubar .menulist:hover a {
color: #747478;
}
#menubar .menulist:hover a:hover {
display: block;
padding: 6px;
background-color: #97979B;
border-radius: 3px;
font-weight: bold;
}
<强> DEMO 强>
关于第二个选择器#menubar .menulist:hover a:hover
的快速说明:
通常情况下,这只需要应用你的css,因为在a:hover
时你没有改变锚的颜色:
#menubar .menulist:hover a {
color: #747478;
}
#menubar a:hover {
...
/* no color change here */
}
如果您决定更改悬停的锚点的颜色,则不会应用它,因为选择器#menubar .menulist:hover a
的特异性高于#menubar a:hover
<强> Example 强>
使第二个选择器#menubar .menulist:hover a:hover
确保它具有比#menubar .menulist:hover a
更高的特异性并且规则正确覆盖
<强> Example 强>
进一步阅读: