js实现汉堡收缩
使用 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 交互 添加点击事件来切换菜单状态:

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:

.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;
}
}






