下拉菜单是菜单按钮边缘的Glitchy

时间:2015-04-09 23:49:47

标签: javascript jquery html css web

我有一个奇怪的问题。我创建了一个标准的下拉菜单,但是我遇到了一个问题,当我在菜单和下拉菜单之间时,菜单消失了。我找不到任何可以阻止悬停状态的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;
}

4 个答案:

答案 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/