当前位置:首页 > JavaScript

js实现tab栏目

2026-02-03 01:55:38JavaScript

使用HTML和CSS构建基础结构

HTML部分需要创建tab的标题和内容区域,通常使用无序列表<ul><div>实现。CSS负责样式布局,如高亮当前选中的tab。

js实现tab栏目

<div class="tab-container">
  <ul class="tab-header">
    <li class="active">Tab 1</li>
    <li>Tab 2</li>
    <li>Tab 3</li>
  </ul>
  <div class="tab-content">
    <div class="content-item active">Content 1</div>
    <div class="content-item">Content 2</div>
    <div class="content-item">Content 3</div>
  </div>
</div>
.tab-header {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
}
.tab-header li {
  padding: 10px 20px;
  cursor: pointer;
  border: 1px solid #ddd;
  background: #f1f1f1;
}
.tab-header li.active {
  background: #fff;
  border-bottom: 1px solid #fff;
}
.tab-content .content-item {
  display: none;
  padding: 20px;
  border: 1px solid #ddd;
  border-top: none;
}
.tab-content .content-item.active {
  display: block;
}

通过JavaScript添加交互逻辑

使用事件监听实现点击切换功能。核心逻辑是移除所有元素的active类,再为当前点击的元素添加该类。

js实现tab栏目

document.addEventListener('DOMContentLoaded', function() {
  const tabs = document.querySelectorAll('.tab-header li');
  const contents = document.querySelectorAll('.content-item');

  tabs.forEach((tab, index) => {
    tab.addEventListener('click', () => {
      // 移除所有active类
      tabs.forEach(t => t.classList.remove('active'));
      contents.forEach(c => c.classList.remove('active'));

      // 添加当前active类
      tab.classList.add('active');
      contents[index].classList.add('active');
    });
  });
});

动态生成Tab内容

若需从数据动态生成tab,可通过遍历数组创建DOM元素。

const tabData = [
  { title: 'News', content: 'Latest updates...' },
  { title: 'Weather', content: 'Forecast details...' }
];

function renderTabs() {
  const header = document.querySelector('.tab-header');
  const content = document.querySelector('.tab-content');

  tabData.forEach((item, i) => {
    // 创建标题
    const li = document.createElement('li');
    li.textContent = item.title;
    if (i === 0) li.classList.add('active');
    header.appendChild(li);

    // 创建内容
    const div = document.createElement('div');
    div.textContent = item.content;
    div.classList.add('content-item');
    if (i === 0) div.classList.add('active');
    content.appendChild(div);
  });
}

支持URL哈希定位

通过监听hashchange事件实现URL哈希切换tab,增强用户体验。

window.addEventListener('hashchange', () => {
  const hash = window.location.hash.substr(1);
  const targetTab = document.querySelector(`[data-tab="${hash}"]`);
  if (targetTab) targetTab.click();
});

// 修改点击事件,同步哈希
tabs.forEach(tab => {
  tab.addEventListener('click', () => {
    window.location.hash = tab.dataset.tab;
  });
});

标签: 栏目js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js 实现vue

js 实现vue

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

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…