<…">
当前位置:首页 > JavaScript

js 实现tab实现切换效果

2026-02-02 12:51:30JavaScript

使用HTML和CSS创建基本结构

创建一个包含多个标签页和对应内容的HTML结构,CSS用于控制标签页的样式和默认隐藏内容区域。

<div class="tabs">
  <div class="tab-header">
    <button class="tab-btn active" data-tab="tab1">Tab 1</button>
    <button class="tab-btn" data-tab="tab2">Tab 2</button>
    <button class="tab-btn" data-tab="tab3">Tab 3</button>
  </div>
  <div class="tab-content">
    <div id="tab1" class="tab-pane active">Content for Tab 1</div>
    <div id="tab2" class="tab-pane">Content for Tab 2</div>
    <div id="tab3" class="tab-pane">Content for Tab 3</div>
  </div>
</div>
.tab-btn {
  padding: 10px 20px;
  background: #f1f1f1;
  border: none;
  cursor: pointer;
}
.tab-btn.active {
  background: #ddd;
}
.tab-pane {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}
.tab-pane.active {
  display: block;
}

使用JavaScript实现切换逻辑

通过事件监听切换标签页,动态更新active类以显示对应内容。

document.querySelectorAll('.tab-btn').forEach(btn => {
  btn.addEventListener('click', () => {
    // 移除所有按钮和内容的active类
    document.querySelectorAll('.tab-btn, .tab-pane').forEach(el => {
      el.classList.remove('active');
    });
    // 为当前按钮添加active类
    btn.classList.add('active');
    // 显示对应内容
    const tabId = btn.getAttribute('data-tab');
    document.getElementById(tabId).classList.add('active');
  });
});

使用事件委托优化性能

若标签页动态生成,可通过事件委托减少监听器数量。

document.querySelector('.tab-header').addEventListener('click', (e) => {
  if (e.target.classList.contains('tab-btn')) {
    document.querySelectorAll('.tab-btn, .tab-pane').forEach(el => {
      el.classList.remove('active');
    });
    e.target.classList.add('active');
    const tabId = e.target.getAttribute('data-tab');
    document.getElementById(tabId).classList.add('active');
  }
});

扩展功能:动画效果

通过CSS过渡或JavaScript为内容切换添加淡入淡出效果。

.tab-pane {
  opacity: 0;
  transition: opacity 0.3s ease;
}
.tab-pane.active {
  opacity: 1;
}

动态加载内容

通过fetch实现点击标签页时异步加载内容。

document.querySelectorAll('.tab-btn').forEach(btn => {
  btn.addEventListener('click', () => {
    const tabId = btn.getAttribute('data-tab');
    fetch(`/api/content/${tabId}`)
      .then(response => response.text())
      .then(data => {
        document.getElementById(tabId).innerHTML = data;
        // 切换active类
        document.querySelectorAll('.tab-btn, .tab-pane').forEach(el => {
          el.classList.remove('active');
        });
        btn.classList.add('active');
        document.getElementById(tabId).classList.add('active');
      });
  });
});

js 实现tab实现切换效果

标签: 效果js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

h5如何实现vr效果

h5如何实现vr效果

使用WebXR API实现VR效果 WebXR是浏览器中实现VR/AR的核心API,支持设备姿态追踪、渲染交互等功能。需在支持WebXR的设备(如Oculus、HTC Vive)或浏览器模拟环境中运行…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…