侧边导航栏(NavBar)功能异常求助:JS逻辑颠倒+按钮显示问题
侧边导航栏问题修复方案
问题根源及修复点
- 函数执行反向:HTML中按钮绑定的函数逻辑颠倒,且
open/close是JavaScript内置关键字,用作自定义函数名会引发冲突 - 打开按钮被遮挡:侧边导航栏默认显示且层级高于打开按钮,导致按钮被完全覆盖
- 关闭后按钮消失:函数名冲突引发异常,加上初始样式设置错误,导致关闭后按钮无法正常显示
修正后的完整代码
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="script.js"></script> <link href="style.css" rel="stylesheet"> <title>IKC Website</title> </head> <body> <span class="openNav" onclick="openSideNav()">☰ open</span> <div id="sideNav" class="sideNav"> <a href="javascript:void(0)" class="closeButton" onclick="closeSideNav()">×</a> <a href="about.html">About</a> <a href="members.html">Members</a> <a href="services.html">Services</a> <a href="contactUs.html">Contact Us</a> </div> </body> </html>
CSS
body { margin: 0; padding: 0; font-family: 'Lato', sans-serif; } .openNav { font-size: 30px; cursor: pointer; position: relative; top: 100px; left: 100px; margin: 10px; z-index: 2; /* 提高层级,避免被侧边栏遮挡 */ color: black; } .sideNav { position: fixed; top: 0; left: 0; background-color: rgb(0, 0, 0); width: 0; /* 默认隐藏 */ height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1; overflow-x: hidden; transition: 0.5s; } .sideNav a { color: #818181; text-decoration: none; font-size: 40px; padding: 10px; transition: 0.3s; display: block; } .sideNav .closeButton { color: #818181; position: absolute; top: 20px; right: 25px; font-size: 60px; margin-left: 50px; } .sideNav a:hover{ color: white; } @media screen and (max-height: 450px) { .sideNav { padding-top: 50px; } .sideNav a { font-size: 18px; } .sideNav .closeButton { font-size: 30px; top: 15px; right: 35px; } }
JavaScript
function openSideNav() { document.getElementById("sideNav").style.width = "55vh"; // 和设计的初始宽度保持一致 } function closeSideNav() { document.getElementById("sideNav").style.width = "0"; }
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

