js 实现增加tab
使用 JavaScript 实现 Tab 功能
通过 DOM 操作动态添加 Tab
通过 JavaScript 动态创建 Tab 元素并插入到 DOM 中:
function addTab(tabContainerId, tabContentId, tabTitle, tabContent) {
const tabContainer = document.getElementById(tabContainerId);
const tabContentContainer = document.getElementById(tabContentId);
// 创建新 Tab 标签
const newTab = document.createElement('li');
newTab.textContent = tabTitle;
newTab.className = 'tab';
newTab.setAttribute('data-tab', `tab-${Date.now()}`);
// 创建对应的 Tab 内容
const newTabContent = document.createElement('div');
newTabContent.className = 'tab-content';
newTabContent.id = newTab.getAttribute('data-tab');
newTabContent.innerHTML = tabContent;
// 添加到 DOM
tabContainer.appendChild(newTab);
tabContentContainer.appendChild(newTabContent);
// 添加点击事件
newTab.addEventListener('click', function() {
// 隐藏所有 Tab 内容
document.querySelectorAll('.tab-content').forEach(content => {
content.style.display = 'none';
});
// 显示当前 Tab 内容
document.getElementById(this.getAttribute('data-tab')).style.display = 'block';
});
// 默认显示新添加的 Tab
document.querySelectorAll('.tab').forEach(tab => {
tab.classList.remove('active');
});
newTab.classList.add('active');
newTabContent.style.display = 'block';
}
使用事件委托优化性能
对于大量 Tab 的情况,使用事件委托可以提高性能:

document.getElementById('tab-container').addEventListener('click', function(e) {
if (e.target.classList.contains('tab')) {
// 隐藏所有内容
document.querySelectorAll('.tab-content').forEach(content => {
content.style.display = 'none';
});
// 显示点击的 Tab 内容
const tabId = e.target.getAttribute('data-tab');
document.getElementById(tabId).style.display = 'block';
// 更新激活状态
document.querySelectorAll('.tab').forEach(tab => {
tab.classList.remove('active');
});
e.target.classList.add('active');
}
});
使用 CSS 增强 Tab 样式
配合 CSS 可以创建更美观的 Tab 界面:

.tab-container {
display: flex;
list-style: none;
padding: 0;
margin: 0;
border-bottom: 1px solid #ddd;
}
.tab {
padding: 10px 20px;
cursor: pointer;
border: 1px solid #ddd;
border-bottom: none;
background-color: #f1f1f1;
margin-right: 5px;
border-radius: 5px 5px 0 0;
}
.tab.active {
background-color: #fff;
border-bottom: 1px solid #fff;
margin-bottom: -1px;
}
.tab-content {
display: none;
padding: 20px;
border: 1px solid #ddd;
border-top: none;
}
.tab-content.active {
display: block;
}
完整示例实现
HTML 结构:
<ul id="tab-container" class="tab-container">
<li class="tab active" data-tab="tab1">Tab 1</li>
</ul>
<div id="tab-content-container">
<div id="tab1" class="tab-content active">初始内容</div>
</div>
<button onclick="addNewTab()">添加 Tab</button>
JavaScript 实现:
function addNewTab() {
const tabTitle = prompt('输入 Tab 标题:', '新 Tab');
if (tabTitle) {
const tabContent = prompt('输入 Tab 内容:', '新内容');
addTab('tab-container', 'tab-content-container', tabTitle, tabContent);
}
}
这种方法提供了灵活的方式来动态添加和管理 Tab,同时保持了良好的性能和用户体验。






