CSS 菜单 - 父节点中的事件链接在焦点位于子节点上时更改颜色

标签 css menu

我有一个 CSS 垂直菜单,我创建的代码如下。 (测试页位于 http://www.candyundies.com/test.php )。

我的问题是,当您将鼠标悬停在子菜单上时,父节点中突出显示的“li”变回非悬停颜色 (#297BCE)。我希望它像悬停时一样保持白色 (#FFF)。我一直在发疯,试图找出我做错了什么。有什么想法我想念的吗?

<style>
#categories {
 background-color:#297BCE;
 width:214px;
 height:37px;
  -moz-border-radius-topright: 8px;
  border-top-right-radius: 8px;
  -moz-border-radius-topleft: 8px;
  border-top-left-radius: 8px;
  position:absolute;
  top:67px;
  padding-top:10px;
  z-index:3;
  font: bold 15px Arial, sans-serif; color:#FFFFFF;
 }
#navigation {  position:absolute;font-size:0.75em; width:214px;top:115px;}
#navigation ul {margin:0px; padding:0px;}
#navigation li {list-style: none;} 
/* FIRST LEVEL TEXT/BACKGROUND/BORDER SETTINGS */
ul.top-level {background:#fff;}
ul.top-level li {
 font-family: arial, sans-serif;
 font-size:14px;
 font-weight:bold;
 border:1px solid #D2D2D2; border-color:#fff #A5A5A5 #A5A5A5 #A5A5A5;
background:#fff url(images/arrow.gif) no-repeat center right;
}
/* FIRST LEVEL TEXT COLOR */
#navigation a {
 display:block;
 color: #297BCE;
 cursor: pointer;
 line-height: 25px;
 text-indent: 10px;
 text-decoration:none;
 width:214px;
}
/* FIRST LEVEL TEXT HOVER COLOR */
#navigation a:hover{
 color: #FFF;
 text-decoration:none;
}
/* FIRST LEVEL HOVER BACKGROUND COLOR */
#navigation li:hover {
 background-color:#297BCE;
 position: relative;
}
#navigation li{
 background-color:#FFF;
 position: relative;
}
/* SECOND LEVEL TEXT SETTINGS */
ul.sub-level li a{
    font-family: arial, sans-serif;
    font-size:12px;
    font-weight:normal;
    background-color:#FFF;
}
ul.sub-level {
    display: none;
}
li:hover .sub-level {
    position: absolute;
    display: block;
    background: #FFF;
    border: #A5A5A5 solid;
    border-width: 1px;
/* set the sub menu flyout position here */
    left: 207px;
    top: -15px;
    z-index:10;
}
/* SECOND LEVEL TEXT HOVER COLOR */
#navigation ul li ul li a:hover{
 color:#f90;
 background-color:#FFF;
 text-decoration:underline;
}
#navigation ul ul{
    padding-top:5px;
    padding-bottom:5px;
    border-radius: 8px;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
     box-shadow: 0px 3px 10px #B0B0B0;
}
#navigation ul li ul li a{
 text-indent: 20px;
 line-height: 17px;
}
ul.sub-level li {
    background:#fff;
    border:1px solid #D2D2D2;
    border-color:#FFF #FFF #FFF #FFF;
    float:left;
}
</style>

<div id="categories">See All Categories</div>
<div id="navigation">
    <ul class="top-level">
        <li><a href="#">Home</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
        <li>
            <a href="#">FAQ</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
        <li>
            <a href="#">News</a>
            <ul class="sub-level">
                <li><a href="#">Sub Menu Item 1</a></li>
                <li><a href="#">Sub Menu Item 2</a></li>
                <li><a href="#">Sub Menu Item 3</a></li>
            </ul>
        </li>
    </ul>
</div>
</div>  

最佳答案

当第 1 级 li 悬停时,您只需要将白色应用于直接子链接。所以使用子选择器语法 (>)

将此声明添加到您的 CSS:

#navigation li:hover > a{
    color:#fff;
}

参见: http://jsfiddle.net/MVKLC/
实现

关于CSS 菜单 - 父节点中的事件链接在焦点位于子节点上时更改颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495819/

相关文章:

html - html正文背景问题

jquery - 如何创建带有嵌套菜单项的可折叠菜单?

c - 将函数参数保存在结构体数组中

javascript - 将 window.getComputedStyle 用于带有 css calc 的伪元素样式

css - 如何使用 CSS 将 "Ubuntu Font Family"添加到我的网站?

menu - ionic 导航后退按钮和菜单按钮一起显示

python - 在 GTK+/Python 中设置应用程序菜单名称(修复 "Unknown Application Name")

android - 为什么菜单中没有显示图片/图标?

javascript - 在 D3.JS 桑基图中突出显示特定链接

css - 如何在没有 Bootstrap 的情况下使用网格系统