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

点击子菜单项时如何以编程方式关闭mmenu?

解决菜单背景未随菜单关闭消失的问题

你的问题核心是:调用api.close()只隐藏了菜单本身,但没处理菜单的背景遮罩层。通常这类菜单的背景是一个独立的遮罩元素(比如带menu-backdrop/overlay类的div),或者由菜单容器的样式状态控制。

给你两个直接的解决思路:

1. 手动控制遮罩层的显示状态

先通过浏览器开发者工具定位背景遮罩对应的DOM元素(比如类名为menu-overlay),然后在点击事件里,调用api.close()之后手动隐藏它:

item.addEventListener("click", (event) => {
  event.preventDefault(); // 阻止锚链接默认跳转行为,避免和自定义滚动冲突
  scroll({
    top: document.querySelector(hash).offsetTop - document.getElementById('header_bottom').clientHeight,
    behavior: "smooth"
  });
  api.close();
  // 新增:隐藏背景遮罩
  const backdrop = document.querySelector('.menu-overlay');
  if (backdrop) {
    // 根据遮罩的控制方式选其一
    backdrop.classList.remove('active'); // 如果是通过active类控制显示
    // 或者 backdrop.style.display = 'none';
  }
});

2. 完善api.close()的逻辑

如果你的菜单用了自定义或第三方API,可能api.close()本身就没包含隐藏遮罩的逻辑。可以查看这个API的源码,在内部补充遮罩层的隐藏代码,这样所有调用api.close()的场景都会自动处理背景。

内容的提问来源于stack exchange,提问作者Stephan B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:52:21