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

js实现tab选项卡

2026-04-04 08:09:33JavaScript

js实现tab选项卡

JavaScript 实现 Tab 选项卡

HTML 结构

<div class="tab-container">
  <div class="tab-buttons">
    <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-contents">
    <div class="tab-content active" id="tab1">Content 1</div>
    <div class="tab-content" id="tab2">Content 2</div>
    <div class="tab-content" id="tab3">Content 3</div>
  </div>
</div>

CSS 样式

.tab-container {
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
}
.tab-buttons {
  display: flex;
  gap: 5px;
}
.tab-btn {
  padding: 10px 20px;
  background: #f0f0f0;
  border: none;
  cursor: pointer;
}
.tab-btn.active {
  background: #ddd;
}
.tab-content {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}
.tab-content.active {
  display: block;
}

JavaScript 实现

document.addEventListener('DOMContentLoaded', function() {
  const tabButtons = document.querySelectorAll('.tab-btn');
  const tabContents = document.querySelectorAll('.tab-content');

  tabButtons.forEach(button => {
    button.addEventListener('click', () => {
      const tabId = button.getAttribute('data-tab');

      // 移除所有按钮和内容的 active 类
      tabButtons.forEach(btn => btn.classList.remove('active'));
      tabContents.forEach(content => content.classList.remove('active'));

      // 添加 active 类到当前按钮和内容
      button.classList.add('active');
      document.getElementById(tabId).classList.add('active');
    });
  });
});

实现说明

  • HTML 结构中 data-tab 属性用于关联按钮和内容
  • CSS 中通过 .active 类控制显示/隐藏状态
  • JavaScript 通过事件委托实现切换逻辑
  • 默认显示第一个选项卡内容

扩展功能

// 添加新选项卡
function addNewTab(tabName, content) {
  const tabButtons = document.querySelector('.tab-buttons');
  const tabContents = document.querySelector('.tab-contents');

  const newBtn = document.createElement('button');
  newBtn.className = 'tab-btn';
  newBtn.textContent = tabName;
  newBtn.setAttribute('data-tab', `tab${Date.now()}`);

  const newContent = document.createElement('div');
  newContent.className = 'tab-content';
  newContent.id = newBtn.getAttribute('data-tab');
  newContent.textContent = content;

  tabButtons.appendChild(newBtn);
  tabContents.appendChild(newContent);

  // 为新按钮添加事件监听
  newBtn.addEventListener('click', function() {
    const tabId = this.getAttribute('data-tab');
    document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
    document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
    this.classList.add('active');
    document.getElementById(tabId).classList.add('active');
  });
}

// 示例:添加新选项卡
addNewTab('New Tab', 'This is new tab content');

注意事项

  • 确保 HTML 结构中 data-tab 值与对应内容 id 匹配
  • 初始状态应有一个选项卡处于激活状态
  • 移动端适配可调整 CSS 中的按钮布局
  • 动态添加选项卡时需重新绑定事件

以上实现提供了基础 Tab 功能,可根据需求扩展动画效果、Ajax 加载内容等高级功能。

标签: 选项卡js
分享给朋友:

相关文章

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js实现刷新页面

js实现刷新页面

刷新页面的方法 在JavaScript中,可以通过多种方式实现页面刷新。以下是几种常见的方法: 使用 location.reload() 调用 location.reload() 方法可以重新加载当…

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…