CSS 菜单链接保持突出显示

标签 css menu

所以我正在尝试一个 css 菜单,我有一个简单的错误,我无法修复并且没有找到任何搜索它的帮助。问题是,当我将鼠标悬停在下拉菜单上时,父链接保持突出显示并且文本恢复为原始颜色。希望这能解释它。这是css代码,我确定这是添加一些东西或修复一行代码的问题。可以查看issue here , 一切正常,直到您访问子菜单(如 BAR 或信息)。

#nav, #nav ul {
    text-align: center;
    text-size:16px;
    float: left;
    width: 750px;
    height: 20px;
    list-style: none;
    line-height: 1;
    background: white;
    padding: 0;
    border: solid #000;
    border-width: 0px;
    border-bottom-width: 1px;
    margin: 0;
    background-image: url('/images/bg.gif');
}

#nav a {
    display: block;
    width: 75px;
    height: 20px;
    color: #0000FF;
    text-decoration: none;
}

#nav a:hover {
    display: block;
    width: 75px;
    height: 20px;
    color: #FFF;
}

#nav li {
    float: left;
    padding: 0;
    width: 75px;
}

#nav li ul { /*sub menu */
    position: absolute;
    left: -999em;
    height: auto;
    width: 75px;
    border: solid #000;
    border-width: 0px;
    border-bottom-width: 1px;
    border-top-width: 1px;
    background-image: url('/images/submenu_bg.png');
}

#nav li li {
    width: 75px;
}

#nav li ul a {
    width: 75px;
}

#nav li ul ul {
    margin: -1.75em 0 0 14em;
}

#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li.sfhover ul ul, #nav li.sfhover ul ul ul {
    left: -999em;
}

#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li.sfhover ul, #nav li li.sfhover ul, #nav li li li.sfhover ul {
    left: auto;
}

#nav li:hover, #nav li.sfhover {
    height: 20px;
    background: #0000FF;
}

最佳答案

您在 #nav a:hover 上设置了文本颜色,但在 #nav li:hover 上设置了背景颜色。因为您的子菜单包含在 li 中,所以即使光标位于子菜单中,它仍然算作悬停。子菜单包含在链接中,因此它们不会保持突出显示状态并恢复为正常颜色。如果您希望菜单项停止突出显示,请将 background 属性移至 #nav a:hover

之前:

#nav a:hover {
    display: block;
    width: 75px;
    height: 20px;
    color: #FFF;
}

#nav li:hover, #nav li.sfhover {
    height: 20px;
    background: #0000FF;
}

之后:

#nav a:hover, #nav li.sfhover a {
    display: block;
    width: 75px;
    height: 20px;
    color: #FFF;
    background: #0000FF;
}

或者,如果您希望菜单在鼠标悬停在子菜单上时保持突出显示(这样看起来更好,IMO),请将color 移动到li:hover 。我知道这有点冗长,但它确实有效。 :-)

之前:

#nav a:hover {
    display: block;
    width: 75px;
    height: 20px;
    color: #FFF;
}

#nav li:hover, #nav li.sfhover {
    height: 20px;
    background: #0000FF;
}

之后:

#nav a:hover {
    display: block;
    width: 75px;
    height: 20px;
}

#nav li:hover a, #nav li.sfhover a {
    color:white;
}

#nav li:hover li a, #nav li.sfhover li a {
    color:blue;
}

#nav li:hover li a:hover, #nav li.sfhover li a:hover {
    color:white;
}

#nav li:hover, #nav li.sfhover {
    color: #FFF;
    height: 20px;
    background: #0000FF;
}

关于CSS 菜单链接保持突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/436319/

相关文章:

html - 带有文本和图像的水平菜单

windows - 检查菜单项是否在 Delphi 中使用 API Win32 启用

javascript - bootstrap-通过代码关闭“移动(汉堡)”菜单

Android 从菜单布局中获取属性

html - 如何让我的标题图片填充宽度,同时保持相同的高度和纵横比?

html - 如何使用 HTML5 和 CSS3 制作可打印的条形图?

javascript - setInterval 没有重复我的代码,但它运行一次,我想知道为什么?

javascript - 如何使用 Jquery 中的某些条件覆盖外部 CSS?

python - 为什么这个 tkinter 菜单小部件的一部分不显示?

jquery - 检查代码更改背景图像与 jquery 的过度链接