我有一个奇怪的问题。我创建了一个标准的下拉菜单,但是我遇到了一个问题,当我在菜单和下拉菜单之间时,菜单消失了。我找不到任何可以阻止悬停状态的CSS,但也许你的眼睛比我的好。
以下是正在发生的事情的GIF:http://imgur.com/axF6skK
我的js代码:
//------- NAV MENU --------//
$('nav li').hover(
function () {
$('ul', this).stop(true,true).fadeIn({ duration: 300, queue: false }).slideDown(300);
},
function () {
$('ul', this).stop(true,true).fadeOut({ duration: 300, queue: false }).slideUp(300);
});
相关HTML:
<nav>
<ul class="center">
<li class="menu">
<a href="#Home">Home</a>
</li>
<li class="menu">
<a class="inactive">Get Started</a>
<ul class="dropdown hidden" id="drop1">
<li class="dropitem"><a href="#Start">Start Making Your CCR</a></li>
<li class="dropitem"><a href="#HowItWorks">How CCR Writer Works</a></li>
<li class="dropitem"><a href="#Why">Why Choose CCR Writer</a></li>
<li class="dropitem"><a href="#MyPrevious">Access My Previous CCRs</a></li>
</ul>
</li>
</ul>
</nav>
相关CSS:
nav > ul {
margin: 0 auto;
padding: 0;
list-style-type: none;
height: 100px;
float: right;
padding-right: 30px;
}
li.menu {
display: inline-block;
padding:0;
margin: 0;
padding-left: 15px;
padding-right: 15px;
height: 100px;
position: relative;
}
li.menu:hover { background-color: #FFFFFF; }
li.menu a {
font-size: 12pt;
padding-top: 33px;
display: table-cell;
vertical-align: middle;
position: relative;
}
li.menu:hover a { color: #232323; }
li.dropitem {
padding: 0;
margin: 0;
}
li.dropitem:hover { background-color: #DADADA; }
li.dropitem a {
color: #232323;
margin: 0;
padding: 10px;
padding-left: 15px;
padding-right: 15px;
font-size: 13pt;
}
ul.dropdown {
position: absolute;
white-space: nowrap;
width: auto;
min-width: 100%;
top: 100px;
left: 0;
padding-top: 0;
margin: 0;
padding-bottom: 10px;
z-index: -1;
border: none;
border-radius: 0px 0px 2px 2px;
box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176);
background-color: #FFF;
height: auto;
}
答案 0 :(得分:2)
尝试使用display: inline-flex
代替display: inline-block
。
li.menu {
display: display: inline-flex;
padding:0;
margin: 0;
padding-left: 15px;
padding-right: 15px;
height: 100px;
position: relative;
}
答案 1 :(得分:1)
尝试删除z-index
上的ul.dropdown
。
答案 2 :(得分:1)
从此CSS中删除z-index: -1
:
ul.dropdown {
position: absolute;
white-space: nowrap;
width: auto;
min-width: 100%;
top: 100px;
left: 0;
padding-top: 0;
margin: 0;
padding-bottom: 10px;
/* z-index: -1; */ /* <-- Remove this line */
border: none;
border-radius: 0px 0px 2px 2px;
box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176);
background-color: #FFF;
height: auto;
}
答案 3 :(得分:0)
您只需将stop()
中的参数从true
更改为false
即可解决问题:
$('nav li').hover(
function () {
$("ul",this).stop(false,false).fadeIn({ duration: 300, queue: false }).slideDown(300);
},
function () {
$("ul",this).stop(false,false).fadeOut({ duration: 300, queue: false }).slideUp(300);
});
正如您在此JSFiddle上看到的那样:http://jsfiddle.net/kwdf8fhc/