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

纯JavaScript实现移动端点击列表项关闭折叠导航栏

移动端折叠导航栏:点击列表项自动关闭的实现方案

JavaScript 实现方案

在你现有代码的基础上,只需给所有导航链接添加点击事件,触发时移除导航栏的active类即可,具体修改如下:

const toggleButton = document.getElementsByClassName('toggle-button')[0]
const navbarLinks = document.getElementsByClassName('navbar-links')[0]
// 获取所有导航列表中的链接元素
const navLinks = document.querySelectorAll('.navbar-links ul li a')

toggleButton.addEventListener('click', () => {
    navbarLinks.classList.toggle('active')
})

// 遍历每个导航链接,绑定点击关闭导航栏的事件
navLinks.forEach(link => {
    link.addEventListener('click', () => {
        // 移除active类,让导航栏恢复隐藏状态
        navbarLinks.classList.remove('active')
    })
})

原理说明

  • 移动端下你的CSS设置了.navbar-links默认display: none,只有添加active类时才会display: flex显示导航栏。
  • 通过querySelectorAll选中所有导航链接,给每个链接绑定点击事件,点击时直接移除active类,导航栏就会自动隐藏。
  • 该代码在桌面端不会产生副作用,因为桌面端的.navbar-links样式不受active类控制,始终保持展开状态。

CSS 方案参考(局限性说明)

纯CSS无法直接实现点击子元素(导航链接)修改父元素(.navbar-links)的类,因为CSS没有父选择器。如果想尝试纯CSS方案,只能借助:target伪类,但需要修改HTML结构且逻辑受限(比如只能针对单个锚点,无法适配多个导航项),因此优先推荐JavaScript方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:23