JavaScript 导航菜单切换失效的解决方案

本文解决因 css 选择器错误导致的 javascript 响应式导航栏点击无反应问题,核心在于修正 `.navbar .open` 为 `.navbar.open`,确保类名正确作用于同一元素。

在构建响应式网页时,常见做法是:小屏幕下隐藏导航栏,通过点击菜单图标(如 bx-menu)触发展开/收起动画。你的 HTML 和 JavaScript 逻辑基本正确——menu.onclick 正确获取了元素并执行 toggle(),控制台日志也验证了 DOM 元素成功获取(console.log(menu) 和 console.log(navbar) 输出非 null),说

明 JS 执行无阻塞。

但问题出在 CSS 优先级与选择器语义 上:

/* ❌ 错误写法 —— 表示:.open 元素必须位于 .navbar 的后代中 */
.navbar .open {
  right: 2%;
}

这段 CSS 实际匹配的是类似

... 的嵌套结构,而你的 HTML 中 .open 是直接添加到