HTML 结构
<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-add">+</button> </div> <div class="tab-content"> <div class="tab-pane active" id="tab1">Content 1</div> <div class="tab-pane" id="tab2">Content 2</div> </div> </div>
CSS 样式
.tab-btn.active { background-color: #ddd; } .tab-pane { display: none; } .tab-pane.active { display: block; }
JavaScript 实现
document.addEventListener('DOMContentLoaded', function() { const tabHeader = document.querySelector('.tab-header'); const tabContent = document.querySelector('.tab-content'); let tabCount = document.querySelectorAll('.tab-btn:not(.tab-add)').length; // 切换 Tab tabHeader.addEventListener('click', function(e) { if (e.target.classList.contains('tab-btn') && !e.target.classList.contains('tab-add')) { document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active')); e.target.classList.add('active'); const tabId = e.target.getAttribute('data-tab'); document.getElementById(tabId).classList.add('active'); } // 添加新 Tab if (e.target.classList.contains('tab-add')) { tabCount++; const newTabId = `tab${tabCount}`; // 创建新按钮 const newBtn = document.createElement('button'); newBtn.className = 'tab-btn'; newBtn.textContent = `Tab ${tabCount}`; newBtn.setAttribute('data-tab', newTabId); // 创建新内容面板 const newPane = document.createElement('div'); newPane.className = 'tab-pane'; newPane.id = newTabId; newPane.textContent = `Content ${tabCount}`; // 插入元素 e.target.insertAdjacentElement('beforebegin', newBtn); tabContent.appendChild(newPane); // 激活新 Tab document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active')); newBtn.classList.add('active'); newPane.classList.add('active'); } }); });
基本 Tab 切换 通过给按钮和内容面板添加 active 类来控制显示状态,点击非添加按钮时切换对应内容。
动态添加 Tab 点击 + 按钮时创建新的 Tab 按钮和内容面板,自动递增编号并激活新创建的 Tab。
DOM 操作 使用 insertAdjacentElement 在添加按钮前插入新按钮,使用 appendChild 在内容区域添加新面板。
注意事项 确保每个 Tab 按钮的 data-tab 属性与对应内容面板的 id 匹配,样式可根据实际需求调整。
使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…
分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…
Vue实现Tab切换的几种方法 使用v-if/v-show指令 通过v-if或v-show控制不同tab内容的显示隐藏。v-if会销毁和重建DOM,v-show仅切换CSS的display属性。 &…
使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…
验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…
文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…
2026-04-09 08:54:50
2026-04-09 08:51:25
2026-04-09 08:49:47
2026-04-09 08:48:15
2026-04-09 08:45:31