html - css 导航栏悬停下拉

标签 html css hover

我想制作一个导航栏菜单,当鼠标悬停在特定的导航栏上时会下拉菜单。

我的导航栏看起来和工作正常,直到我尝试让悬停下拉菜单工作。具体来说,这就是我要寻找的:将鼠标悬停在“工作”上,然后会出现“视频”和“摄影”的下拉菜单。我不认为我嵌套有什么问题,所以我认为是 CSS 出了问题。我尝试了一些不同的建议,但没有任何效果。

旁注:我最近为导航项指定了“菜单”的 ID。我有它,以便导航上的当前页面将是某种较暗的颜色,并且当当前页面导航悬停时它会保持相同的颜色。这在我将 id 更改为“菜单”之前有效(在它是“nav ul li”之前)。现在,当您悬停时,它会改变颜色。是什么让这种变化发生了?

* {
padding: 0;
margin: 0;
}
ul, ol, dl {
padding: 0;
margin: 0;
}
ul#menu {
list-style: none;
text-align: center;
background-color: #bac9a9;
padding-top: 5px;
padding-bottom: 5px;
overflow: hidden;
}
ul#menu:after {
content:"";
background-image: url("../images/navbar-shadow-green.jpg");
height: 8px;
width: 100%;
display: block;
position: absolute;
left: 0;
margin-top: 4px;
}
ul#menu li {
display: inline;
}
ul#menu li a {
text-decoration: none;
color: #f3ffcf;
font-size: 22px;
padding: 10px 25px;
margin: 0 -2px;
}
ul#menu li a:hover {
background-color: #b2c1a2;
}
a.selected-page, a.selected-page:hover {
background-color: #a6b396;
}
li#sub ul {
display: none;
}
ul#menu li#sub:hover ul {
display: block;
}

<nav>
<ul id="menu">
    <li><a href="index.html" class="selected-page">about</a>
    </li>
    <li id="sub"><a href="#">work</a>
    </li>
    <ul>
        <li><a href="#">videos</a>
        </li>
        <li><a href="#">photography</a>
        </li>
    </ul>
    <li><a href="#">services</a>
    </li>
    <li><a href="#">contact</a>
    </li>
</ul>
</nav>

JSFiddle

最佳答案

我认为您的嵌套有误。您希望滚动工作列表项时显示的列表是该列表项的子项。尝试按如下方式更新您的 HTML/CSS(请参阅 fiddle):

HTML:

<nav>
    <ul id="menu">
        <li><a href="index.html" class="selected-page">about</a>
        </li>
        <li id="sub">
            <a href="#">work</a>
            <ul>
                <li><a href="#">videos</a></li>
                <li><a href="#">photography</a></li>
            </ul>
        </li>
        <li><a href="#">services</a>
        </li>
        <li><a href="#">contact</a>
        </li>
    </ul>
</nav>

CSS:

* {
    padding: 0;
    margin: 0;
}
ul, ol, dl {
    padding: 0;
    margin: 0;
}
ul#menu {
    list-style: none;
    text-align: center;
    background-color: #bac9a9;
    padding-top: 5px;
    padding-bottom: 5px;
    overflow: hidden;
}
ul#menu:after {
    content:"";
    background-image: url("../images/navbar-shadow-green.jpg");
    height: 8px;
    width: 100%;
    display: block;
    position: absolute;
    left: 0;
    margin-top: 4px;
}
ul#menu li {
    display: inline;
}
ul#menu li a {
    text-decoration: none;
    color: #f3ffcf;
    font-size: 22px;
    padding: 10px 25px;
    margin: 0 -2px;
}
ul#menu li a:hover {
    background-color: #b2c1a2;
}
a.selected-page, a.selected-page:hover {
    background-color: #a6b396;
}
li#sub ul {
    display: none;
    position: absolute;
    top: 35px; left: 115px;
    background-color: #b2c1a2;
}
li#sub ul li {
    display: block;
}
ul#menu li#sub:hover ul {
    display: block;

}

关于html - css 导航栏悬停下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19261158/

相关文章:

javascript - 如何更改数据表中按钮的位置

html - 根据字母顺序对 HTML 属性进行排序

css - 使用主题 tokenColors 的 VS 代码 webview css 变量名称

移动设备上的 CSS 悬停

css - 在 chrome 中滚动时 Div 悬停不起作用

html - 如何让我的图像在用 "visibility: hidden"消失后重新出现在悬停时?

javascript - 用于比较 2 个不同条件下的数字的 If...Else If 语句

html - 如何在可滚动的 div 元素内使用 CSS 绝对位置

javascript - 多个元素的鼠标悬停和鼠标移开

html - 在 Wordpress 上的图像上创建悬停后图像不会调整大小