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

为纯CSS实现的Div自定义导航栏添加汉堡图标并实现移动端垂直响应式

实现纯CSS响应式汉堡导航栏

核心思路

用HTML的checkbox作为状态开关,配合CSS兄弟选择器控制菜单的显示/隐藏,全程无需JavaScript,保持纯CSS实现逻辑。

步骤1:修改HTML结构

在原导航栏前添加汉堡切换控件和图标,把所有导航项统一放进容器中:

<!-- 隐藏的checkbox开关 -->
<input type="checkbox" id="menu-toggle" class="menu-toggle">
<!-- 汉堡图标(关联checkbox) -->
<label for="menu-toggle" class="hamburger">
  <span></span>
  <span></span>
  <span></span>
</label>

<!-- 导航菜单容器 -->
<div class="nav-container">
  <div class="nav-item">首页</div>
  <div class="nav-item">产品</div>
  <div class="nav-item">关于我们</div>
  <div class="nav-item">联系我们</div>
</div>

步骤2:编写CSS样式

基础样式(桌面端)

隐藏checkbox和汉堡图标,保持导航栏横向排列:

.menu-toggle {
  display: none; /* 隐藏原生checkbox控件 */
}

.hamburger {
  display: none; /* 桌面端不显示汉堡图标 */
}

.nav-container {
  display: flex;
  gap: 2rem;
  background: #eee;
  padding: 1rem 2rem;
}

.nav-item {
  padding: 0.5rem 1rem;
  cursor: pointer;
  transition: background 0.2s;
}

.nav-item:hover {
  background: #ddd;
  border-radius: 4px;
}

移动端响应式设置(适配宽度≤768px)

显示汉堡图标,将菜单改为垂直排列,通过checkbox状态控制展开/收起:

@media (max-width: 768px) {
  /* 显示汉堡图标 */
  .hamburger {
    display: flex;
    flex-direction: column;
    cursor: pointer;
    padding: 1rem;
  }

  .hamburger span {
    width: 25px;
    height: 3px;
    background: #333;
    margin: 3px 0;
    transition: all 0.3s ease;
  }

  /* 移动端菜单默认隐藏 */
  .nav-container {
    position: absolute;
    top: 60px; /* 对应导航栏高度,避免被汉堡遮挡 */
    left: 0;
    width: 100%;
    flex-direction: column; /* 垂直排列菜单项 */
    background: #eee;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
  }

  /* 选中checkbox时展开菜单 */
  .menu-toggle:checked ~ .nav-container {
    max-height: 300px; /* 足够容纳所有菜单项的高度 */
  }

  /* 汉堡图标转叉动画 */
  .menu-toggle:checked ~ .hamburger span:nth-child(1) {
    transform: rotate(-45deg) translate(-5px, 6px);
  }

  .menu-toggle:checked ~ .hamburger span:nth-child(2) {
    opacity: 0;
  }

  .menu-toggle:checked ~ .hamburger span:nth-child(3) {
    transform: rotate(45deg) translate(-5px, -6px);
  }
}

关键细节说明

  • 用max-height配合overflow: hidden实现菜单的平滑展开/收起,比display: none的生硬切换更有过渡效果
  • 汉堡图标的切换通过CSS transform实现,无需额外图片资源
  • 绝对定位的菜单容器要注意top值的设置,避免和汉堡按钮重叠
  • 可以根据你原导航栏的样式调整颜色、间距、高度等参数,保持整体风格统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:50:23