纯HTML/CSS/JS实现的汉堡菜单点击无响应问题求助
问题解决:汉堡菜单点击无法展开的修复方案
嘿,我检查了你的代码,发现问题出在CSS里的类名拼写错误上,这直接导致点击汉堡按钮后菜单没法正常显示。下面是具体的问题点和修复后的代码:
主要问题点
- 你在媒体查询中多次把类名
.navbar-links误写成了.navabr-links(字母b和a顺序颠倒),包括:.navabr-links ul li a应该是.navbar-links ul li a.navabr-links.active应该是.navbar-links.active
- 这些拼写错误让CSS无法识别JavaScript添加的
active类,所以菜单始终处于隐藏状态。
修复后的完整CSS代码
@import url('https://fonts.googleapis.com/css2?family=Lato&display=swap'); body { margin: 0; padding: 0; } .navbar { display: flex; position: relative; justify-content: space-between; align-items: center; background-color: rgba(121, 173, 173, 0.3); color: rgb(87, 82, 82); } .brand-title { font-family: 'Lato', sans-serif; font-size: 1.5rem; margin: .5rem; } .navbar-links { height: 100%; } .navbar-links ul { margin: 0; padding: 0; display: flex; } .navbar-links li { list-style: none; } .navbar-links li a { font-family: 'Lato', sans-serif; text-decoration: none; color: rgb(87, 82, 82); padding: 1rem; display: block; } .navbar-links li:hover { background-color: #555; } .navbar-links li a:hover { color: rgba(121, 173, 173); } .toggle-button { position: absolute; top: .75rem; right: 1rem; display: none; flex-direction: column; justify-content: space-between; width: 30px; height: 21px; } .toggle-button .bar { height: 3px; width: 100%; background-color: rgb(87, 82, 82); border-radius: 10px; } @media (max-width: 800px) { .toggle-button { display: flex; } .navbar-links { display: none; width: 100%; } .navbar { flex-direction: column; align-items: flex-start; } .navbar-links ul { width: 100%; flex-direction: column; } .navbar-links ul li { text-align: center; } /* 修复类名拼写错误 */ .navbar-links ul li a { padding: .5rem 1rem; } /* 修复类名拼写错误,现在active类能正确触发显示 */ .navbar-links.active { display: flex; } }
额外提示
- 你的JavaScript和HTML结构都是没问题的,修复CSS后,点击汉堡按钮就能正常展开/收起菜单了。
- 以后遇到这类问题,可以用浏览器的开发者工具(按F12打开),查看元素的类名是否被正确应用,以及对应的CSS规则是否生效,这样能快速定位拼写或选择器错误。
内容的提问来源于stack exchange,提问作者Alec Johnson
相关产品推荐
相关产品推荐

