当前位置:首页 > JavaScript

tabs实现 js

2026-03-02 05:27:52JavaScript

使用原生JavaScript实现Tabs功能

通过DOM操作和事件监听实现基础的Tabs切换功能。以下是完整实现代码:

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

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

      tabButtons.forEach(btn => btn.classList.remove('active'));
      tabContents.forEach(content => content.classList.remove('active'));

      button.classList.add('active');
      document.getElementById(tabId).classList.add('active');
    });
  });
});

对应HTML结构:

<div class="tabs">
  <div class="tab-buttons">
    <button class="tab-button active" data-tab="tab1">Tab 1</button>
    <button class="tab-button" data-tab="tab2">Tab 2</button>
    <button class="tab-button" data-tab="tab3">Tab 3</button>
  </div>

  <div class="tab-contents">
    <div id="tab1" class="tab-content active">Content 1</div>
    <div id="tab2" class="tab-content">Content 2</div>
    <div id="tab3" class="tab-content">Content 3</div>
  </div>
</div>

基础CSS样式:

.tab-button {
  padding: 10px 20px;
  background: #eee;
  border: none;
  cursor: pointer;
}

.tab-button.active {
  background: #ddd;
  font-weight: bold;
}

.tab-content {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
}

.tab-content.active {
  display: block;
}

使用jQuery实现Tabs

如果项目中已引入jQuery,可以用更简洁的方式实现:

tabs实现 js

$(document).ready(function() {
  $('.tab-button').click(function() {
    const tabId = $(this).data('tab');

    $('.tab-button').removeClass('active');
    $('.tab-content').removeClass('active');

    $(this).addClass('active');
    $('#' + tabId).addClass('active');
  });
});

动态加载内容

实现点击Tab时动态加载内容:

document.querySelectorAll('.tab-button').forEach(button => {
  button.addEventListener('click', async () => {
    const tabId = button.dataset.tab;
    const response = await fetch(`/api/content/${tabId}`);
    const content = await response.text();

    document.getElementById(tabId).innerHTML = content;
    // 其余切换逻辑同上
  });
});

可访问性增强

为提升无障碍体验,可添加ARIA属性:

tabs实现 js

<button role="tab" aria-selected="true" aria-controls="tab1">Tab 1</button>
<div role="tabpanel" id="tab1" aria-labelledby="tab1">...</div>

对应JavaScript更新:

button.setAttribute('aria-selected', 'true');
content.setAttribute('aria-hidden', 'false');

动画效果实现

为Tab切换添加淡入淡出效果:

function switchTab(newTab) {
  const currentTab = document.querySelector('.tab-content.active');

  currentTab.style.opacity = 0;
  setTimeout(() => {
    currentTab.classList.remove('active');
    newTab.classList.add('active');
    newTab.style.opacity = 0;
    setTimeout(() => {
      newTab.style.opacity = 1;
    }, 50);
  }, 300);
}

CSS添加过渡效果:

.tab-content {
  transition: opacity 0.3s ease;
  opacity: 0;
}

.tab-content.active {
  opacity: 1;
}

标签: tabsjs
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现日历

js实现日历

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统…

jquery js

jquery js

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