当前位置:首页 > JavaScript

js实现汉堡收缩

2026-03-15 14:19:59JavaScript

使用 CSS 和 JavaScript 实现汉堡菜单

HTML 结构 创建一个基本的汉堡菜单结构,包含一个按钮和导航链接:

<button class="hamburger" id="hamburger">
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
</button>
<nav class="nav-menu" id="navMenu">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

CSS 样式 为汉堡菜单和导航菜单添加样式:

.hamburger {
  background: none;
  border: none;
  cursor: pointer;
  padding: 10px;
  display: inline-block;
}

.hamburger-line {
  display: block;
  width: 25px;
  height: 3px;
  background: #333;
  margin: 5px 0;
  transition: all 0.3s ease;
}

.nav-menu {
  display: none;
  background: #f9f9f9;
  padding: 20px;
}

.nav-menu.active {
  display: block;
}

.hamburger.active .hamburger-line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.hamburger.active .hamburger-line:nth-child(2) {
  opacity: 0;
}

.hamburger.active .hamburger-line:nth-child(3) {
  transform: rotate(-45deg) translate(7px, -7px);
}

JavaScript 交互 添加点击事件来切换菜单状态:

js实现汉堡收缩

document.getElementById('hamburger').addEventListener('click', function() {
  this.classList.toggle('active');
  document.getElementById('navMenu').classList.toggle('active');
});

使用纯 CSS 实现汉堡菜单

如果不需要 JavaScript,可以使用纯 CSS 和 checkbox 实现:

<input type="checkbox" id="hamburger-toggle" class="hamburger-toggle">
<label for="hamburger-toggle" class="hamburger">
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
</label>
<nav class="nav-menu">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

对应的 CSS:

js实现汉堡收缩

.hamburger-toggle {
  display: none;
}

.hamburger {
  display: inline-block;
  cursor: pointer;
  padding: 10px;
}

.nav-menu {
  display: none;
}

.hamburger-toggle:checked ~ .nav-menu {
  display: block;
}

.hamburger-toggle:checked + .hamburger .hamburger-line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.hamburger-toggle:checked + .hamburger .hamburger-line:nth-child(2) {
  opacity: 0;
}

.hamburger-toggle:checked + .hamburger .hamburger-line:nth-child(3) {
  transform: rotate(-45deg) translate(7px, -7px);
}

动画效果优化

为菜单添加平滑的展开/收起动画:

.nav-menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out;
}

.hamburger-toggle:checked ~ .nav-menu {
  max-height: 500px;
}

响应式设计建议

在移动设备上显示汉堡菜单,桌面设备上显示常规导航:

@media (max-width: 768px) {
  .desktop-nav {
    display: none;
  }
  .hamburger {
    display: block;
  }
}

@media (min-width: 769px) {
  .hamburger {
    display: none;
  }
  .nav-menu {
    display: block;
  }
}

标签: js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…