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

如何用VanillaJS实现鼠标移入内部元素仍保持展开的自定义下拉选择框

问题原因

你当前仅为下拉触发按钮.categories__link绑定了鼠标移入移出事件,而下拉菜单.categories__wrapper是独立的兄弟元素,鼠标从按钮移动到菜单区域时,会触发按钮的mouseout事件直接关闭菜单,所以出现了你遇到的问题。

解决方法

方案1:纯CSS实现(优先推荐,无需JS)

因为触发按钮和下拉菜单都是.nav的直接子元素,只需要新增一行CSS规则即可实现需求,可完全删除你现有的JS代码:

/* 父级导航hover时显示下拉菜单 */
.nav:hover .categories__wrapper {
    display: block;
}

该方案逻辑更简单性能更好,只要鼠标还在.nav范围内(无论是停在触发按钮还是下拉菜单上),菜单都会保持展开,鼠标完全移出.nav区域后菜单才会收起,完全符合你的预期效果。

方案2:JS修改实现

如果需要保留JS控制逻辑,只需要把事件绑定到公共父级.nav上即可:

const nav = document.querySelector('.nav');
const categoriesList = document.querySelector('.categories__wrapper');

function categoriesVisible() {
    categoriesList.style.display = 'block';
}

function categoriesHidden() {
    categoriesList.style.display = 'none';
}

nav.addEventListener('mouseover', categoriesVisible);
nav.addEventListener('mouseout', categoriesHidden);

内容的提问来源于stack exchange,提问作者in cognito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:06:03