我有一个基本的 CSS 下拉菜单,如下所示:http://jsfiddle.net/qfTt3/ (下面相同的代码)
HTML
<ul id="main-navigation">
<li class="active"><a href='#'>Plans</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<li><a href='#'>Sub Link 2</a></li>
</ul>
</li>
<li><a href='#'>How it Works</a></li>
<li><a href='#'>About</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<li><a href='#'>Sub Link 2</a></li>
<li><a href='#'>Sub Link 3</a></li>
<li><a href='#'>Sub Link 4</a></li>
</ul>
</li>
<li><a href='#'>Testimonials</a>
<ul>
<li><a href='#'>Sub Link 1</a></li>
<li><a href='#'>Sub Link 2</a></li>
<li><a href='#'>Sub Link 3</a></li>
<li><a href='#'>Sub Link 4</a></li>
</ul>
</li>
<li><a href='#'>FAQ</a></li>
<li><a href='#'>Contact</a></li>
</ul>
CSS
#main-navigation {
background: #FFF;
padding: 0;
margin: 0;
list-style-type: none;
height: 100px;
float: right;
font-size: 18px;
}
#main-navigation li {
float: left;
}
#main-navigation>li {
line-height: 100px;
background-color: #FFF;
margin-left: 10px;
}
#main-navigation>li>ul>li {
line-height: 30px;
background: #FFF;
margin-left: 0px;
border-bottom: 1px solid #999;
position: relative;
z-index: 100;
}
#main-navigation li a {
padding: 0px 12px;
display: block;
text-decoration: none;
color: #6d6e71;
}
#main-navigation ul {
position: absolute;
left: -9999px;
top: -9999px;
list-style-type: none;
margin: 0;
}
#main-navigation li:hover {
position: relative;
background: #10b794;
}
#main-navigation li a:hover {
color: #FFF;
}
#main-navigation li:hover ul {
left: 0px;
top: 100px;
background: #10b794;
padding: 0px;
}
#main-navigation li:hover ul li a {
padding: 5px;
display: block;
width: 168px;
text-indent: 15px;
background: #10b794;
}
#main-navigation li:hover ul li a:hover {
color: #FFF;
}
#main-navigation li.active {
border-bottom: 4px solid #10b794;
height: 96px;
}
如您所见,当鼠标悬停在单个元素上时,文本颜色会变为白色。我想要做的是同时拥有主 <li>
的文本颜色如果悬停该菜单/子菜单的任何部分,子菜单项也会变为白色。如果有人将鼠标悬停在菜单中的“计划”上,所有子菜单链接也应该有白色文本。如果仅使用 CSS 选择器就可以做到这一点,还是我需要研究 JS 解决方案?
最佳答案
你想改变:
#main-navigation li a:hover {
color: #FFF;
}
成为:
#main-navigation li:hover > a {
color: #FFF;
}
基本上,当您将鼠标悬停在列表项上时,您希望 a
元素的颜色发生变化。这样,当您将鼠标悬停在其他子菜单项上时,您仍然悬停在包含子菜单的 li
上。
我使用子选择器 >
,这样当您将鼠标悬停在主菜单项链接上时,子菜单项链接不会受到影响。
要定位计划子菜单链接颜色,您应该将样式应用于类以专门定位它们。由于您已经有专门针对计划 (.active
) 的类(class),我将仅将其用于演示目的。
CSS:
#main-navigation li:hover > a, #main-navigation .active:hover a {
color: #FFF;
}
我在定位 .active
时摆脱了子选择器,这样当鼠标悬停在主链接上时,它会使所有子 a
元素变白。
关于html - 当任何 child 悬停时更改 CSS 下拉菜单颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236765/