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

JavaScript菜单点击内部元素意外关闭的问题求助

JavaScript菜单点击内部元素意外关闭的问题求助

我帮你找到了问题的根源和解决方法,一起来看看:

问题原因

你的CSS里给.circle-inner设置了pointer-events: none;,这个属性会让元素“忽略”点击事件——点击它的时候事件会直接穿透到下方的元素。而内部的<a>、<h1>等元素都继承了这个属性,所以当你点击这些链接时,浏览器不会把它们识别为circle的子元素,导致!circle.contains(e.target)这个条件成立,意外触发了菜单关闭的逻辑。

解决方法

只需要修改CSS,恢复内部可点击元素的点击事件捕获能力,两种方法任选其一即可:

方法一:给.circle-inner整体开启点击事件

把CSS里的.circle-inner规则中的pointer-events: none;改成pointer-events: auto;:

.circle-inner {
  position: absolute;
  width: 100%;
  height: 100%;
  transition: all 0.3s ease;
  pointer-events: auto; /* 替换原来的none */
}

方法二:仅给可点击的<a>标签开启点击事件

如果你不想让.circle-inner整体接收点击,也可以单独给<a>标签设置:

.circle-inner a {
  text-decoration: none;
  color: inherit;
  pointer-events: auto; /* 新增这一行 */
}

修改后的效果

调整后点击菜单内部的<a>标签时,e.target会正确指向<a>元素,circle.contains(e.target)会返回true,不会触发关闭菜单的逻辑;而点击菜单外部区域时,菜单依然会正常关闭,完全符合你的需求~

备注:内容来源于stack exchange,提问作者ImaginePain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:43:00