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

如何实现按钮点击变色,切换按钮时恢复原按钮默认白色

实现导航按钮点击切换高亮效果

以下是可以直接运行的实现方案,逻辑简单清晰,解决你遇到的按钮颜色切换问题:

HTML 结构

先搭建基础的导航按钮和对应区块结构,给所有导航按钮统一加一个类名方便批量操作:

<nav>
  <button class="nav-btn active">首页</button>
  <button class="nav-btn">产品</button>
  <button class="nav-btn">关于我们</button>
  <button class="nav-btn">联系我们</button>
</nav>

<section id="home">首页内容</section>
<section id="products">产品内容</section>
<section id="about">关于我们内容</section>
<section id="contact">联系我们内容</section>

CSS 样式

定义按钮默认样式和高亮状态的样式,这里用.active类标记当前选中的按钮:

.nav-btn {
  background-color: white;
  border: none;
  padding: 8px 16px;
  margin: 0 4px;
  cursor: pointer;
  transition: background-color 0.2s; /* 加个过渡动画更丝滑 */
}

.nav-btn.active {
  background-color: #2196F3; /* 选中时的蓝色,可自行修改 */
  color: white;
}

JavaScript 逻辑

核心思路是:点击任意按钮时,先移除所有按钮的高亮类,再给当前点击的按钮添加高亮类:

// 获取所有导航按钮
const navButtons = document.querySelectorAll('.nav-btn');

// 给每个按钮绑定点击事件
navButtons.forEach(button => {
  button.addEventListener('click', () => {
    // 移除所有按钮的active类
    navButtons.forEach(btn => btn.classList.remove('active'));
    // 给当前点击的按钮添加active类
    button.classList.add('active');
    
    // 如果需要同时滚动到对应区块,可以加上下面这段
    const targetId = button.textContent.toLowerCase(); // 假设按钮文本对应section的id,可根据实际调整
    document.getElementById(targetId).scrollIntoView({ behavior: 'smooth' });
  });
});

关键说明

  • 统一使用.nav-btn类选择所有按钮,避免逐个操作元素,代码更易维护
  • 每次点击时先清空所有按钮的高亮状态,再单独标记当前按钮,确保同一时间只有一个按钮处于高亮
  • 可选的平滑滚动代码可以让页面自动跳转到对应区块,符合导航按钮的常规需求

内容的提问来源于stack exchange,提问作者Mitko.Vtori

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:20:35