You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导航栏子菜单移出导航链接时不消失的技术问题求助

背景

我正在尝试创建一个支持hover交互、可显示/隐藏子菜单(submenu)的导航栏(navbar)。

代码实现

HTML代码

<nav>
  <div class="logo">
    <img src='https://cdn.iconscout.com/icon/free/png-256/creative-68-225308.png'>
  </div>
  <div class="nav-links">
    <ul>
      <li><a href="#">Home</a></li>
      <li class='about'>
        <a href="#">About</a>
        <ul class='about-submenu'>
          <li><a href="#">Our Team</a></li>
          <li><a href="#">Our History</a></li>
          <li><a href="#">Our Vision</a></li>
        </ul>
      </li>
      <li class='services'>
        <a href="#">Services</a>
        <ul class='svcs-submenu'>
          <li><a href="#">Web Design</a></li>
          <li><a href="#">Graphic Design</a></li>
          <li><a href="#">SEO</a></li>
        </ul>
      </li>
      <li><a href="#">Contact</a></li>
    </ul>
  </div>
</nav>

CSS代码

* {
  margin: 0;
  padding: 0;
}

body {
  background-color: rgb(198, 206, 206);
}

.logo img {
  width: 3.5rem;
}

nav ul {
  list-style: none;
}

nav ul a {
  text-decoration: none;
  color: black;
}

nav {
  display: flex;
  justify-content: space-between;
  margin: 2rem 15rem 0 15rem;
}

.nav-links ul {
  display: flex;
  justify-content: space-between;
  gap: 4em;
}

ul.about-submenu {
  position: absolute;
  display: none;
  padding: 15px 15px 0px 15px;
  margin-top: 10px;
  width: 100px;
  background-color: azure;
  border-radius: 10px;
}

ul.svcs-submenu {
  position: absolute;
  display: none;
  padding: 15px 15px 0px 15px;
  margin-top: 10px;
  width: 140px;
  background-color: aqua;
  border-radius: 10px;
}

ul.about-submenu li,
ul.svcs-submenu li {
  margin-bottom: 15px;
}

ul.about-submenu li a:hover,
ul.svcs-submenu li a:hover {
  color: brown;
}

JavaScript代码

const about = document.querySelector('.about')
const services = document.querySelector('.services')
const abtDrpdwn = document.querySelector('ul.about-submenu')
const svcDrpdwn = document.querySelector('ul.svcs-submenu')

about.addEventListener('mouseenter', () => {
  abtDrpdwn.style.display = 'block'
})

abtDrpdwn.addEventListener('mouseleave', () => {
  abtDrpdwn.style.display = 'none'
})
操作尝试

我尝试使用mouseenter/mouseover事件触发子菜单显示,使用mouseleave事件触发子菜单隐藏。

当前结果

鼠标hover导航链接时子菜单正常显示,移出子菜单时子菜单正常消失,但移出导航链接时子菜单不会消失。

预期结果

鼠标移出导航链接或子菜单时,子菜单均会消失。

现寻求解决方案,希望解决该交互问题。


内容的提问来源于stack exchange,提问作者Mike Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 22:25:05