JavaScript 导航菜单点击失效问题的完整解决方案

本文详解如何修复响应式导航栏中 javascript 点击切换失效的问题,核心在于修正 css 选择器错误(`.navbar .open` → `.navbar.open`),并确保 html 结构、js 事件绑定与媒体查询协同工作。

在构建响应式导航栏时,常见现象是:页面缩放至移动端尺寸后菜单图标(如 #menu-icon)正确显示,但点击后导航栏(.navbar)既不展开也不收起——这通常并非 JavaScript 逻辑错误,而是 CSS 选择器语义误解导致样式未生效。

? 根本原因:CSS 类选择器误用

你当前的 CSS 规则:

.navbar .open {
    right: 2%;
}

这是一个后代选择器(descendant selector),它匹配的是:任意位于 .navbar 元素内部、且自身具有 open 类的元素(例如

...)。
但你的目标是为 .navbar 元素自身同时拥有 open 类时 应用样式,因此必须使用类组合选择器(class combinator):

✅ 正确写法(关键修复):

.navbar.open {
    right: 2%;
}

该规则表示:仅当某个元素同时具备 navbar 和 open 两个 class(即