【发布时间】:2014-06-04 13:07:43
【问题描述】:
当用户将鼠标悬停在我的水平菜单上时,如何在另一个菜单项悬停之前保持子菜单打开?以下是源代码:
HTML
<ul id="nav">
<li><a href="/">Home</a></li>
<li><a href="#">my Links</a>
<ul>
<li><a href="Link1">Link 1</a></li>
<li><a href="Link2">Link 2</a></li>
</ul>
</li>
</ul>
CSS
#nav {
width:100%;
margin:0;
padding:12px 0 4px 0;
height:30px;
position:relative;
}
#nav li {
float:left;
list-style:none;
display:inline
}
#nav a {
text-decoration:none;
}
#nav li ul li a {
margin:0
}
#nav .active a, #nav li:hover>a {
background:#ac2024;
color:#fff;
}
#nav li a:hover, #nav ul a:hover {
background:#ac2024;
color:#fff
}
#nav ul {
position:absolute;
left:0;
height:27px;
width:100%;
display:none;
}
#nav li:hover>ul {
display: inline;
}
#nav ul a {
width:100%
}
#nav:after {
content:".";
display:inline;
clear:both;
visibility:hidden;
height:0
}
#nav {
display:inline-block
}
如果这在 CSS 中是不可能的,那么如何用 jQuery 来完成呢?谢谢。
【问题讨论】:
-
这听起来像是你必须用一点 JS 来做的事情。话虽如此,如果将 display: block !important 应用于 a:hover 元素会发生什么?
-
所以你想删除显示的第一组翻转链接,然后显示第二组?或者您希望在翻转父菜单时显示所有子菜单?您最好发布最终的导航 HTML 和您想要实现的目标的描述。而不是我们试图通过移动目标帖子进行编码
-
不,我不想让所有子菜单都可见,我希望当悬停在第一组翻转链接上时,它们会显示出来,当悬停在第二组时,第一组应该隐藏,第二组保持活跃。
-
如果有人再次翻过第一个菜单,您希望发生什么?禁用第二个子元素并再次显示第一个?如果是这种情况,我已经更新了下面的答案