0

JavaScriptを使用して表示および非表示にする簡単なドロップダウンメニューを作成しています。メニューが表示され、リンクは引き続き機能しますが、ドロップダウンする最初のリンクを通過すると、特定の高さを設定しても、ドロップダウン メニュー全体が消えます。また、その下にコンテンツを含む別の div があり、その div 内のテキストが邪魔にならないように押し出されますが、z-index で修正されると思いました。

function showDrop() {
  document.getElementById("dropdown").style.visibility = "visible";
}

function hideDrop() {
  document.getElementById("dropdown").style.visibility = "hidden";
}
#nav {
  /* margin-left: 550px;
  padding-top: 110px; */
  font-family: 'Averia Serif Libre', cursive;
  font-size: 24px;
  position: relative;
}

#nav ul li {
  display: block;
  float: left;
  margin-right: 10px;
}

#nav ul li a:link,
#nav ul li a:visited {
  text-decoration: none;
  float: left;
}

#nav ul li a:hover,
#nav ul li a:active {
  color: #00B2EE;
}

#nav ul li ul {
  visibility: hidden;
  top: 0;
  left: 0;
  display: block;
  width: 100px;
  height: 100px;
  clear: both;
  z-index: 2;
  padding-top: 2px;
}

#nav ul li ul li {
  width: 100px;
  z-index: inherit;
  background-color: #AAA;
  font-size: 16px;
  line-height: 22px;
}
<div id="nav">
  <ul>
    <li><a href="#" id="nAbout">About</a></li>
    <li><a href="#" id="nPortfolio" onMouseOver="showDrop();">Portfolio</a>
      <ul id="dropdown" onMouseOut="hideDrop();">
        <li><a href="#">Print Design</a></li>
        <li><a href="#">Web Design</a></li>
        <li><a href="#">Illustration</a></li>
      </ul>
    </li>
    <li><a href="#" id="nContact">Contact</a></li>
    <li><a href="#" id="nBlog">Blog</a></li>
  </ul>
</div>

4

1 に答える 1

0

要素の子をホバリングしている場合でも、マウスが「アウト」であると見なされるonmouseleaveため、代わりにイベントを使用してください。onmouseoutサンプルコード:

$("#dropdown").mouseleave(function() { //jQuery required; onmouseleave is IE-specific
    hideDrop();
});

それが役に立ったことを願っています。

于 2012-08-14T19:41:22.353 に答える