SuperAPI AI 工具集

tabs

前端与建站

查看项目

更新于 10-16 09:52

技能介绍

用途:Tabs 将内容组织为共享同一空间的多个面板,一次只显示一个面板,选项卡列表持续显示所有可用分区,让用户在不离开页面的情况下切换视图,减少信息过载。

适用场景:同一层级的并列内容,如产品页的 Description、Specifications、Reviews;设置页的 General、Security、Notifications、Billing;仪表盘的不同数据视图(Chart、Table、Summary);代码编辑器显示不同文件;用户资料的 Activity、Projects、Settings。

不适用:需要同时对比的内容(改用并排布局)、必须按顺序完成的步骤(改用向导或 step)、跳转到完全不同页面(用导航菜单)、只有 2 个选项(考虑 toggle 或分段控件)、超过 7-8 个选项卡(考虑侧边栏或垂直导航)。

无障碍要求:容器用 role="tablist",每个选项卡 role="tab",每个面板 role="tabpanel";活动选项卡 aria-selected="true",其余为 false;用 aria-controls 和 aria-labelledby 关联;活动选项卡 tabindex="0",非活动为 -1;支持 Arrow Left/Right 切换、Home/End 跳转首尾;活动面板加 tabindex="0"。不要用 Tab 键在选项卡间导航,不要用 <a> 做选项卡(除非跳转 URL)。

性能目标:切换 < 50ms,初始渲染 < 100ms,键盘响应 < 16ms;重型内容在首次激活时懒加载;组件逻辑与样式包体 < 3KB。建议面板保留在 DOM 中并隐藏(<div role="tabpanel" hidden>...</div>)以保留状态。

常见错误:让每个选项卡 tabindex="0" 导致键盘用户逐个 Tab;缺少 ARIA 角色;用选项卡做页面级导航导致整页刷新(如需 URL 同步可用 hash 片段)。

相关模式:wizard、accordion、navigation-menu、sidebar。完整实现细节、示例与测试说明见 references/pattern.md。