事件前的下拉显示

Drop-down displays before event

长期潜伏者,第一次提问。我这里有个奇怪的事件...

我的网站顶部有一个导航栏,其中一些项目有一个下拉菜单。当鼠标位于下拉菜单显示区域时,下拉菜单将自动显示。 (见下图)。红色箭头表示触发下拉菜单时我的鼠标所在的位置。 example

我感觉这与 z-index 相关,但主要内容的 z-index 的不同组合,子菜单不起作用。如果我将 z-index 更改为“-1”,它将不再显示,直到您将鼠标悬停在 'Info' 上,但它会将其隐藏在主要内容后面并使链接不可点击。

编辑 以包含菜单的所有 CSS 和 HTML。谢谢!

#header {
  width: 970px;
  height: 26px;
  margin: 0 auto;
  margin-top: 25px;
  border-bottom-width: thin;
  border-top-width: thin;
  border-left-width: thin;
  border-right-width: thin;
  border-style: solid;
  border-color: #444;
}

.clearfix: after {
  display: block;
  clear: both;
}

.menu-wrap {
  z-index: 1;
  margin: -13px 0px;
  float: right;
}

.menu li {
  margin: 0px;
  list-style: none;
  font-family: 'Oswald', sans-serif;
  text-transform: uppercase;
  font-weight: 500;
}

.menu a {
  text-decoration: none;
  color: #2e2728;
}

.menu>ul>li {
  float: left;
  display: block;
  font-size: 13px;
}

.menu>ul>li>a {
  padding: 3px 10px;
}

.menu>ul>li:hover>a,
.menu>ul>.current-item>a {
  background: #2e2728;
  height: 15px;
  color: #fff;
}

.menu li:after {
  content: '|';
  color: #2e2728;
  display: inline-block;
}

.menu li:last-child:after {
  content: none;
}

.menu li:hover .sub-menu {
  opacity: 1;
}

.sub-menu {
  padding: 5px 0px;
  margin-top: 3px;
  position: absolute;
  z-index: 0;
  opacity: 0;
  background: #2e2728;
}

.sub-menu li {
  display: block;
  font-size: 13px;
}

.sub-menu li a {
  display: block;
  padding: 0px 10px;
  color: #fff;
}

.sub-menu li a:hover,
.sub-menu .current-item a {
  background: #3e3436;
}
<div id="header">
  <div id="socialmedia">
    other stuff
  </div>

  <div class="menu-wrap">
    <nav class="menu">
      <ul class="clearfix">
        <li><a href="http://www.jon-stone.com/">Home</a></li>
        <li><a href="/urbanexplorations/">Urban Explorations</a></li>
        <li><a href="/galleries/">Galleries</a></li>
        <li><a href="#">Photography&#9662;</a>
          <ul class="sub-menu">
            <li><a href="http://www.jon-stone.com/info/fineart.php">Fine&nbsp;Art&nbsp;Purchasing</a></li>
            <li><a href="http://www.jon-stone.com/weddings/">Weddings</a></li>
            <li><a href="http://www.jon-stone.com/realestate/">Real Estate</a></li>
          </ul>
        </li>
        <li><a href="http://www.jon-stone.com/videography">Videography</a></li>
        <li><a href="">Info&#9662;</a>
          <ul class="sub-menu">
            <li><a href="http://www.jon-stone.com/info/statementandbio.php">Artist&nbsp;Statement&nbsp;&amp;&nbsp;Bio</a></li>
            <li><a href="http://www.jon-stone.com/info/awardsandpublications.php">Awards&nbsp;&amp;&nbsp;Publications</a></li>
            <li><a href="http://www.jon-stone.com/info/events.php">Events</a></li>
          </ul>
        </li>
        <li><a href="http://www.jon-stone.com/contact/">Contact</a></li>
      </ul>
    </nav>
  </div>
</div>

问题似乎出在子菜单的隐藏方式上。由于其 opacity 设置为 0,用户仍然可以悬停该项目,就好像它就在那里一样。您应该改为使用 display: none 寻找解决方案。这样,即使用户将鼠标悬停在隐藏项的通常位置,在 CSS 条件下也不会被视为悬停。