JS NavSlide功能异常:点击Burger按钮无法呼出侧边菜单
侧边滑出菜单点击无响应的问题排查与修复
核心问题1:JavaScript文件未正确加载
你的HTML中script标签存在语法错误,导致浏览器无法识别并加载指定的JS文件:
<!-- 错误写法 --> <script> src="./js/app.js"</script> <!-- 正确写法 --> <script src="./js/app.js"></script>
需移除script标签内多余的大括号,保证src属性正确嵌入标签结构中。
核心问题2:初始化逻辑未执行
你的JS代码仅定义了初始化函数,但没有调用它,导致菜单点击事件从未绑定到Burger按钮上:
// 修复前 const navSlide = () => { const burger = document.querySelector('.burger'); const nav = document.querySelector('.navigation'); burger.addEventListener('click', () => { nav.classList.toggle('nav-active'); }); } const app = () => { navSlide(); } // 修复后:在代码末尾调用初始化函数 const navSlide = () => { const burger = document.querySelector('.burger'); const nav = document.querySelector('.navigation'); burger.addEventListener('click', () => { nav.classList.toggle('nav-active'); }); } const app = () => { navSlide(); } // 执行初始化 app();
也可以简化逻辑,直接调用navSlide():
const navSlide = () => { const burger = document.querySelector('.burger'); const nav = document.querySelector('.navigation'); burger.addEventListener('click', () => { nav.classList.toggle('nav-active'); }); } // 直接触发初始化 navSlide();
辅助修复:CSS语法与优先级问题
- 背景色语法错误:
.navigation类中background-color: (white);的括号是多余的,需修改为:
background-color: white;
- 样式优先级问题:当前
.nav-active样式写在媒体查询外部,移动端下可能被媒体查询内的.navigation样式覆盖,建议将其移入@media screen and (max-width: 768px)媒体查询内部:
@media screen and (max-width: 768px){ body{ overflow-x: hidden; } .navigation{ position: absolute; right: 0px; height: 92vh; top: 8vh; background-color: white; display: flex; flex-direction: column; align-items: center; width: 50%; transform: translateX(100%); transition: transform 0.5s ease-in; } .navigation li{ opacity: 0; } .burger{ display: block; } /* 将.nav-active移入媒体查询内 */ .nav-active{ transform: translateX(0%); } }
可选优化:添加菜单淡入效果
若希望菜单展开时列表项有淡入动画,可在CSS中补充过渡逻辑:
@media screen and (max-width: 768px){ .navigation li{ opacity: 0; transition: opacity 0.5s ease-in; } .nav-active li{ opacity: 1; } }
内容的提问来源于stack exchange,提问作者senikaura
相关产品推荐
相关产品推荐

