如何使悬停时菜单保持可见

How to make menu remain visible while on hover

我创建了一个子菜单,当您将鼠标悬停在 'services' link 上时会出现该子菜单。但是,当我将鼠标移到子菜单时,它会消失,因为它位于我想要的导航下方。

到目前为止,我已尝试将子菜单保留在其自然顶部位置并使用 z-index 使其位于导航后面。我发现这行不通,因为子菜单是绝对定位的。

body {
  font-family: acumin-pro, sans-serif;
  font-size: 16px;
  letter-spacing: .25px;
  margin: 0;
}

.header {
  display: flex;
  width: 100%;
}

.nav {
  width: 80%;
  margin: auto;
  position: relative;
}

.nav a {
  color: #000;
}

.nav ul:hover li a {
  color: #eee
}

.nav ul li:hover a {
  color: #333;
}

.nav a:last-child {
  margin: 0px;
}

.nav ul {
  list-style: none;
  padding: 0px;
}

.nav ul li {
  display: inline-block;
  margin: 0 35px 0 0;
}

.three:hover>.sub-menu {
  display: block;
  opacity: 1
}

.sub-menu {
  height: 200px;
  position: absolute;
  top: 100%;
  background: #333;
  display: none;
  opacity: 0;
  left: 0;
  right: 0;
}
<div class="header">
  <div class="nav">
    <ul>
      <li>
        <a class="one">Home</a>
      </li>
      <li>
        <a class="two">About</a>
      </li>
      <li class="three">
        <a class="">Services</a>
        <div class="sub-menu"></div>
      </li>
      <li>
        <a class="four">Contact</a>
      </li>
    </ul>
  </div>
</div>

子菜单应该位于导航的正下方,并且当我将鼠标从 link 移动到子菜单时保持可见。

我在悬停时添加了 padding-bottom: 20px; link 需要连接到子菜单以便它仍然悬停

body {
  font-family: acumin-pro, sans-serif;
  font-size: 16px;
  letter-spacing: .25px;
  margin: 0;
}

.header {
  display: flex;
  width: 100%;
}

.nav {
  width: 80%;
  margin: auto;
  position: relative;
}

.nav a {
  color: #000;
}

.nav ul:hover li a {
  color: #eee
}

.nav ul li:hover a {
  color: #333;
  padding-bottom: 20px;
}

.nav a:last-child {
  margin: 0px;
}

.nav ul {
  list-style: none;
  padding: 0px;
}

.nav ul li {
  display: inline-block;
  margin: 0 35px 0 0;
}

.three:hover>.sub-menu {
  display: block;
  opacity: 1
}

.sub-menu {
  height: 200px;
  position: absolute;
  top: 100%;
  background: #333;
  display: none;
  opacity: 0;
  left: 0;
  right: 0;
}
<div class="header">
  <div class="nav">
    <ul>
      <li>
        <a class="one">Home</a>
      </li>
      <li>
        <a class="two">About</a>
      </li>
      <li class="three">
        <a class="">Services</a>
        <div class="sub-menu"></div>
      </li>
      <li>
        <a class="four">Contact</a>
      </li>
    </ul>
  </div>
</div>

删除边距 .nav ul 并为 .nav a

添加填充
.nav ul {
      list-style: none;
      padding: 0px;
      margin:0;
    }
.nav a {
  color: #000;
  padding: 10px 0;
  display: block;
}

body {
  font-family: acumin-pro, sans-serif;
  font-size: 16px;
  letter-spacing: .25px;
  margin: 0;
}

.header {
  display: flex;
  width: 100%;
}

.nav {
  width: 80%;
  margin: auto;
  position: relative;
}

.nav a {
  color: #000;
  padding: 10px 0;
display: block;
}

.nav ul:hover li a {
  color: #eee
}

.nav ul li:hover a {
  color: #333;
}

.nav a:last-child {
  margin: 0px;
}

.nav ul {
  list-style: none;
  padding: 0px;
  margin:0;
}

.nav ul li {
  display: inline-block;
  margin: 0 35px 0 0;
}

.three:hover>.sub-menu {
  display: block;
  opacity: 1
}

.sub-menu {
  height: 200px;
  position: absolute;
  top: 100%;
  background: #333;
  display: none;
  opacity: 0;
  left: 0;
  right: 0;
}
<div class="header">
  <div class="nav">
    <ul>
      <li>
        <a class="one">Home</a>
      </li>
      <li>
        <a class="two">About</a>
      </li>
      <li class="three">
        <a class="">Services</a>
        <div class="sub-menu"></div>
      </li>
      <li>
        <a class="four">Contact</a>
      </li>
    </ul>
  </div>
</div>

我用过这个

body {
  font-family: acumin-pro, sans-serif;
  font-size: 16px;
  letter-spacing: .25px;
  margin: 0;
}

.header {
  display: flex;
  width: 100%;
}

.nav {
  width: 80%;
  margin: auto;
  position: relative;
}

.nav a {
  color: #000;
}

.nav ul:hover li a {
  color: #eee
}

.nav ul li:hover a {
  color: #333;
}

.nav a:last-child {
  margin: 0px;
}

.nav ul {
  list-style: none;
  padding: 0px;
}

.nav ul li {
  display: inline-block;
  margin: 0 35px 0 0;
}

.three:hover>.sub-menu {
  display: block;
  opacity: 1
}

.sub-menu {
  height: 200px;
  position: absolute;
  top: 100%;
  background: #333;
  opacity: 0;
  left: 0;
  right: 0;
  display: none;
}
.sub-menu::before {
  content: "";
  top: -18px;
  width: 100%;
  height: 20px;
  position: absolute;
}
<div class="header">
  <div class="nav">
    <ul>
      <li>
        <a class="one">Home</a>
      </li>
      <li>
        <a class="two">About</a>
      </li>
      <li class="three">
        <a class="">Services</a>
        <div class="sub-menu"></div>
      </li>
      <li>
        <a class="four">Contact</a>
      </li>
    </ul>
  </div>
</div>

只需将其替换为您现有的 css,仅此而已。

.nav a { 
  color: #000; 
  padding-bottom: 20px; 
  display: inline-block;
}
.nav ul {
    list-style: none;
    padding: 0px; 
  margin: 0;
}