You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击侧边滑出菜单内链接后如何让汉堡按钮恢复初始状态

问题根因

汉堡按钮的切换动画由change类控制,只有点击汉堡按钮本身时才会触发类名切换,点击侧边栏内链接仅执行了toggleMenu修改菜单状态,没有同步修改汉堡按钮的类,因此按钮状态无法复位。


修复步骤

1. 替换原有JS代码

将汉堡按钮状态同步逻辑整合到toggleMenu函数中,无需再分开调用两个函数:

// 提前获取汉堡按钮DOM,避免重复查询
const menuBtn = document.querySelector('.lineContainer');
var toggleStatus = 1;

function toggleMenu() {
  if (toggleStatus === 1) {
    document.getElementById("mySidenav").style.width = "250px";
    document.getElementById("main").style.marginLeft = "250px";
    document.body.style.backgroundColor = "rgba(0,0,0,0.3)";
    // 打开菜单时给按钮添加change类
    menuBtn.classList.add("change");
    toggleStatus = 0;
  } else if (toggleStatus === 0) {
    document.getElementById("mySidenav").style.width = "0";
    document.getElementById("main").style.marginLeft = "0";
    document.body.style.backgroundColor = "white";
    // 关闭菜单时给按钮移除change类
    menuBtn.classList.remove("change");
    toggleStatus = 1;
  }
}

2. 修改汉堡按钮的点击事件

原有按钮同时绑定了两个函数,现在仅保留toggleMenu调用即可:

<button class="lineContainer" onclick="toggleMenu()">
  <div class="bar1"></div>
  <div class="bar2"></div>
  <div class="bar3"></div>
</button>

可选优化:所有侧边栏链接点击自动关闭菜单

如果需要点击任意侧边栏链接都关闭菜单,给所有a标签统一添加onclick="toggleMenu()"即可:

<div id="mySidenav" class="sidenav">
  <a class="about" href="#about" onclick="toggleMenu()">About</a>
  <a href="#m" onclick="toggleMenu()">Meet Me</a>
  <a href="#" onclick="toggleMenu()">Contact Form</a>
  <a href="#" onclick="toggleMenu()">Reviews</a>
  <a href="#" onclick="toggleMenu()">Social Media</a>
</div>

修改完成后,不管是点击汉堡按钮还是侧边栏内的链接,菜单状态和汉堡按钮动画都会同步更新。


内容的提问来源于stack exchange,提问作者codingscare1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:18:01