如何实现汉堡菜单点击后自动收起及点击外部区域关闭功能

3次阅读

如何实现汉堡菜单点击后自动收起及点击外部区域关闭功能

本文详细讲解如何用纯 javascript 实现汉堡菜单的交互逻辑:点击汉堡图标展开/收起菜单,并在点击菜单项或页面其他区域时自动关闭菜单,避免菜单常驻屏幕。

要让汉堡菜单(Hamburger Menu)真正具备可用性,仅靠 css 动画是不够的——必须通过 javaScript 控制 .active 类的切换与移除。你当前的 CSS 已正确设置了 #menu.active 的位移动画(transform: translateX(0%)),但缺少关键的事件监听逻辑,导致菜单“展开后无法关闭”。

以下是完整、健壮且适合初学者理解的 javascript 解决方案:

// 获取 DOM 元素 const burger = document.querySelector(".burger"); const menu = document.querySelector("#menu");  // 1. 点击汉堡图标:切换菜单显隐状态 burger.addEventListener("click", (e) => {   e.stopPropagation(); // 阻止事件冒泡,避免触发后续的 document 点击关闭   menu.classList.toggle("active"); });  // 2. 点击页面任意位置(除汉堡和菜单本身外):关闭菜单 document.addEventListener("click", (e) => {   // 若点击目标是汉堡图标或菜单容器本身,不执行关闭   if (e.target === burger || menu.contains(e.target)) {     return;   }   // 否则,强制移除 active 类,收起菜单   menu.classlist.remove("active"); });

关键说明:

⚠️ 注意事项:

  • 确保 html 中汉堡按钮(.burger)和菜单(#menu)在 dom 中已加载完成再执行 js(推荐将脚本置于

text=ZqhQzanResources