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

点击导航内部nav-link链接时如何自动关闭整个导航菜单

解决方案

实现原理

你的导航菜单的展开/收起完全由id为navi-toggle的复选框的选中状态控制:复选框被勾选时菜单展开,取消勾选时菜单收起。只需要在点击导航内的链接/可点击元素时,自动取消该复选框的选中状态即可实现点击关闭效果。

方案1:原生JS实现(推荐,无需修改现有HTML/CSS)

把以下代码插入到页面底部</body>标签之前,或者放到你已有的JS文件中即可:

// 获取导航开关复选框
const navToggle = document.getElementById('navi-toggle');
// 匹配导航内所有需要触发关闭的元素:跳转链接、社交图标
const navClickTargets = document.querySelectorAll('.navigation__nav a, .navigation__nav .social-links i');

// 批量绑定点击事件
navClickTargets.forEach(item => {
  item.addEventListener('click', () => {
    navToggle.checked = false;
  });
});

方案2:无JS实现(需修改HTML结构)

如果不想引入JS,可以给导航内所有可点击元素(a标签、社交图标)外层嵌套指向navi-toggle的label标签,示例如下:

<!-- 改造前 -->
<a href="#projects" id="c">Projects</a>

<!-- 改造后 -->
<label for="navi-toggle" class="nav-close-label">
  <a href="#projects" id="c">Projects</a>
</label>

同时在SCSS中补充以下样式避免label干扰链接默认行为:

.nav-close-label {
  display: inline-block;
  padding: 0;
  margin: 0;
  pointer-events: none;
  .navigation__nav a, .navigation__nav .social-links i {
    pointer-events: auto;
  }
}

两种方案都不会影响原有链接的跳转、新标签页打开、锚点定位等默认行为。

内容的提问来源于stack exchange,提问作者David Onifade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:45:04