
创建 HTML 结构
- 标签 1
- 标签 2
- 标签 3
内容 1
内容 2
内容 3
“`
JavaScript 实现
“`javascript// 获取选项卡和内容元素const tabs = document.querySelectorAll(‘.tabs li’);const tabContents = document.querySelectorAll(‘.tab-content’);// 设置初始状态tabs[0].classList.add(‘active’);tabContents[0].classList.add(‘active’);// 为选项卡添加事件监听器tabs.forEach((tab, idx) => {tab.addEventListener(‘click’, () => {// 移除所有选项卡和内容的活动状态tabs.forEach(tab => tab.classList.remove(‘active’));tabContents.forEach(content => content.classList.remove(‘active’));// 添加活动状态到当前选项卡和内容tab.classList.add(‘active’);tabContents[idx].classList.add(‘active’);});});“`
平滑过渡效果
“`css.tab-content {transition: opacity 0.5s ease-in-out;}“““javascript// 在选项卡切换时添加/移除过渡类tabs.forEach((tab, idx) => {tab.addEventListener(‘click’, () => {// …// 添加过渡类tabContents[idx].classList.add(‘transition’);// 延迟移除过渡类以完成动画setTimeout(() => {tabContents[idx].classList.remove(‘transition’);}, 500);});});“`
可访问性功能
为选项卡添加适当的角色和 aria 标签:
内容 1
“`允许使用键盘导航选项卡:“`javascripttabs.forEach((tab, idx) => {tab.addEventListener(‘keydown’, e => {// 使用方向键导航if (e.key === ‘ArrowLeft’ || e.key === ‘ArrowUp’) {// 将焦点移到前一个选项卡if (idx > 0) {tabs[idx – 1].focus();}} else if (e.key === ‘ArrowRight’ || e.key === ‘ArrowDown’) {// 将焦点移到下一个选项卡if (idx < tabs.length – 1) {tabs[idx + 1].focus();}}});});“`
结论
WordPress教程










