我有以下下拉菜单:
<div id="header">
<div class="container">
<ul class="navigation">
<li>
<a href=""></a>
<ul class="sub-menu">
<li></li>
</ul>
</li>
</ul>
</div>
</div>
#header .navigation {
float: right;
margin: 15px 0 0;
position: relative;
}
#header .navigation li {
float: left;
margin: 0 20px 0 0;
position: relative;
}
#header .navigation li a {
float: left;
}
#header .navigation li:hover .sub-menu {
display: block;
transition: all 0.0s ease 0s;
}
#header .navigation > li > .sub-menu {
display: none;
width: 150px;
transition: all 0.0s ease 0.2s;
padding: 10px 15px 2px;
position: absolute;
top: 20px;
left: 0;
}
#header .navigation > li > .sub-menu li {
clear: both;
margin: 0 0 10px;
width: 100% ;
}
#header .sub-menu .sub-menu li {
padding: 10px 0 0 15px;
margin: 0 !important;
}
问题是.sub-menu
在离开父母后立即消失。我怎样才能让.sub-menu
留在原地只要我徘徊它?
答案 0 :(得分:2)
有两点需要注意:
li
和子ul
之间存在任何差距ul
整齐地隐藏在顶部li
的底部,顶部:100%。 (这可以防止它们之间的任何差距。E.g。
#header .navigation {
float: right;
margin: 15px 0 0;
position: relative;
}
#header .navigation li {
float: left;
margin: 0 20px 0 0;
position: relative;
}
#header .navigation li a {
float: left;
}
#header .navigation li:hover .sub-menu {
display: block;
transition: all 0.0s ease 0s;
}
#header .navigation li .sub-menu {
display: none;
width: 150px;
transition: all 0.0s ease 0.2s;
position: absolute;
top: 100%;
left: 0;
}
#header .navigation > li > .sub-menu li {
clear: both;
width: 100%;
}
ul, li {list-style: none; padding: 0; margin: 0;}
&#13;
<div id="header">
<ul class="navigation">
<li>
<a href="">link</a>
<ul class="sub-menu">
<li>text</li>
</ul>
</li>
</ul>
</div>
&#13;
答案 1 :(得分:0)
在我看来,问题在于这行代码:
top: 20px;
如果您将鼠标从列表项锚标记快速移动到.sub-menu
,.sub-menu
赢了就会消失。
因此,您必须做的是缩小从a
到.sub-menu
的差距。
例如,您可以将top: 20px;
更改为padding-top: 20px;
,它可以解决问题。但是风格可能会改变。
更新:
对于您提供的链接,您只需将top: 20px;
更改为top: 15px
。