移动端点击汉堡图标后响应式菜单不显示问题求助
移动端汉堡菜单点击无响应问题解决方法
跟着YouTube教程制作第一个网站,遇到移动端菜单问题:希望菜单呈现红背景样式(如图),但点击汉堡图标后菜单毫无反应。


你的代码已经完成了移动端菜单的CSS布局,但缺少JavaScript交互逻辑来控制菜单的显示/隐藏,同时需要调整菜单背景色来匹配你想要的红色样式。
具体修复步骤:
- 添加JavaScript事件监听,绑定汉堡按钮和关闭按钮的点击动作,切换菜单的显示状态
- 修改移动端菜单的背景色为目标红色
- 可选:添加过渡动画,让菜单滑入滑出更流畅
修改后的完整代码:
HTML(新增JavaScript交互)
<head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Beauty by Name </title> <link rel="stylesheet" href="style.css"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"> </head> <body> <section class="header"> <nav> <a href="index.html"><img class="logo" style="width: 200px;" src="images/logo.jpg" alt=""></a> <div class="nav-links"> <i class="fa-solid fa-xmark"></i> <ul> <li><a href="">Home</a></li> <li><a href="">About</a></li> <li><a href="">Offer</a></li> <li><a href="">Contact</a></li> </ul> </div> <i class="fa-solid fa-bars"></i> </nav> <div class="text-box"> <h1>Beauty By YOUR Name</h1> <p>We are dedicated to enhancing your natural charm, offering a range of tailored treatments and pampering experiences. <br> Step into our serene oasis and let us bring out your inner glow.</p> <a href="" class="hero-btn">Contact us</a> </div> </section> <script> // 获取菜单及按钮元素 const navLinks = document.querySelector('.nav-links'); const menuBtn = document.querySelector('.fa-bars'); const closeBtn = document.querySelector('.fa-xmark'); // 点击汉堡按钮打开菜单 menuBtn.addEventListener('click', () => { navLinks.style.right = '0'; }); // 点击关闭按钮隐藏菜单 closeBtn.addEventListener('click', () => { navLinks.style.right = '-200px'; }); </script> </body>
CSS(修改背景色+添加过渡动画)
* { margin: 0; padding: 0; font-family: 'Lora', serif; } .header { /*overflow: hidden; */ min-height: 100vh; width: 100%; background-color: white; background-position: center; background-size: cover; position: relative; } .logo { position: absolute; top: 0; left: 0; } nav { display: flex; padding: 2% 6%; justify-content: space-between; } nav img { width: 150px; } .nav-links { flex: 1; text-align: right; } .nav-links ul li { list-style: none; display: inline-block; padding: 8px 12px; position: relative; } .nav-links ul li a { color: #515675; text-decoration: none; font-size: 16px; } .nav-links ul li::after { content: ''; width: 100%; height: 2px; background: #E3AAAF; display: block; margin: auto; transition: 0.5s; } .nav-links ul li:hover::after { background: #515675; } .text-box { width: 90%; color: #515675; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .text-box h1 { font-size: 62px; } .text-box p { margin: 10px 0 42px; font-size: 16px; color: #515675; } .hero-btn { display: inline-block; text-decoration: none; color: #515675; border: 1px solid #515675; padding: 12px 34px; font-size: 16px; background: transparent; position: relative; cursor: pointer; } .hero-btn:hover { border: 1px solid #E3AAAF; background: #E3AAAF; transition: 1s; } nav .fa-solid { display: none; } @media(max-width: 700px) { * { overflow-x: hidden; } .text-box h1 { font-size: 20px; } .nav-links ul li { display: block; } .nav-links { position: absolute; /* 设置为目标红色背景,可根据截图调整色值 */ background: #E3AAAF; height: 100vh; width: 200px; top: 0; right: -200px; text-align: left; z-index: 2; /* 添加过渡动画,优化菜单切换体验 */ transition: right 0.5s ease; } /* 适配红色背景,修改菜单文字颜色为白色 */ .nav-links ul li a { color: white; } nav .fa-solid { display: block; color: #515675; margin: 10px; font-size: 22px; cursor: pointer; } .nav-links ul { padding: 30px; } }
说明:
- JavaScript部分通过监听按钮点击,修改
.nav-links的right属性,实现菜单从右侧滑入/滑出 - CSS里将移动端菜单背景色改为红色(使用了你现有代码中的
#E3AAAF,若截图颜色不同可替换为对应色值) - 添加
transition: right 0.5s ease让菜单切换更顺滑 - 同步修改移动端菜单文字颜色为白色,保证红色背景下的可读性
内容的提问来源于stack exchange,提问作者Martyna
相关产品推荐
相关产品推荐

