如何修复 JavaScript 响应式导航栏点击无效的问题

本文详解因 css 选择器错误(`.navbar .open` 误写为后代选择器)导致的 js 导航栏开关失效问题,并提供完整修复方案、代码验证步骤与最佳实践建议。

在构建响应式导航栏时,一个常见却极易被忽视的陷阱是 CSS 类名组合选择器的语法错误。你已正确编写了 JavaScript 逻辑:通过 menu.onclick 切换 #menu-icon 的图标类(bx-x)和 .navbar 的显示状态类(open),控制台日志也确认 DOM 元素成功获取——这说明 JS 本身无语法错误,执行流程正常。问题根源在于 CSS 中对 .open 类的样式作用范围定义有误。

关键错误出现在这段媒体

查询内的 CSS 规则中:

/* ❌ 错误写法:后代选择器 */
.navbar .open {
    right: 2%;
}

该写法表示「任意位于 .navbar 元素内部、且自身具有 open 类的元素」,但你的目标是让

  1. HTML 结构顺序与语义:确保 在 DOM 中位于 .navbar 之后(或至少不被其遮挡),且未被 z-index 或 display: none 意外隐藏;
  2. JavaScript 加载时机:当前