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

如何实现点击汉堡菜单时切换颜色:展开变白、收起变蓝?

实现汉堡菜单点击颜色切换方案

需求说明

需要实现汉堡菜单的颜色切换逻辑:

  • 菜单收起状态:汉堡菜单为蓝色(var(--clr-primary))
  • 菜单展开状态:汉堡菜单变为白色(var(--clr-secondary))
  • 汉堡菜单仅在页面宽度≤600px时显示

修改后的完整代码

HTML(无需修改)

<nav class="nav" id="home">
  <a href="#" class="toggle-button">
    <span class="bar"></span>
    <span class="bar"></span>
    <span class="bar"></span>
  </a>
  <div class="navbar-links">
    <ul class="nav-list">
      <li class="nav-item"><a href="#home" class="nav-link">home</a></li>
      <li class="nav-item"><a href="#about-me" class="nav-link">about me</a></li>
      <li class="nav-item"><a href="#services" class="nav-link">services</a></li>
      <li class="nav-item"><a href="#contact" class="nav-link">contact</a></li>
    </ul>
  </div>
</nav>

CSS(关键修改)

.nav {
  display: flex;
  justify-content: right;
  align-items: center;
  background-color: var(--clr-main);
}

.nav-item {
  margin-right: 10px;
  list-style: none;
}

.nav-link{
  font-size: 20px;
  text-decoration: none;
  color: var(--clr-secondary);
  font-weight: var(--fw-bold);
  display: block;
}

.nav-list{
  display: flex;
}

.nav-item:hover{
  background-color: #00a6ff;
}

.toggle-button{
  position: absolute;
  top: 18px;
  right: 1rem;
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 31px;
  height: 21px;
}

.toggle-button .bar{
  height: 3px;
  width: 100%;
  background-color: var(--clr-primary); /* 初始蓝色 */
  border-radius: 10px;
  transition: background-color 0.3s ease; /* 可选:平滑过渡动画 */
}

/* 展开状态下的白色样式 */
.toggle-button.active .bar {
  background-color: var(--clr-secondary);
}

@media (max-width: 600px){
  .toggle-button{
    display: flex;
  }

  .nav{
    flex-direction: column;
    align-items: flex-start;
  }

  .navbar-links{
    width: 100%;
    display: none;
  }

  .navbar-links.active{
    display: flex;
  }

  .nav-list{
    flex-direction: column;
    width: 100%;
    padding-left: 0;
    margin: 0;
  }

  .nav-item{
    text-align: center;
    margin: 0;
    padding: 15px 0;
  }
}

JavaScript(关键修改)

const toggleButton = document.getElementsByClassName("toggle-button")[0]
const navbarLinks = document.getElementsByClassName("navbar-links")[0]

toggleButton.addEventListener("click", () => {
  navbarLinks.classList.toggle("active")
  toggleButton.classList.toggle("active") // 同步切换汉堡按钮的active类
})

核心逻辑

  1. 通过JavaScript在点击汉堡按钮时,同时给按钮自身添加/移除active类
  2. 利用CSS类选择器.toggle-button.active .bar,控制展开状态下的汉堡条颜色
  3. 可选添加transition属性实现颜色切换的平滑动画

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:15:33