跳到内容
+

标签页

选项卡让您可以轻松浏览和切换不同的视图。

选项卡用于组织内容,并允许在相关且处于同一层级结构的内容组之间进行导航。

简介

选项卡是使用相关组件的集合实现的

  • <Tab /> - 选项卡元素本身。单击选项卡会显示其对应的面板。
  • <Tabs /> - 容纳选项卡的容器。负责处理选项卡之间的焦点和键盘导航。
项目一
Enter 开始编辑

基础知识

import Tabs from '@mui/material/Tabs';
import Tab from '@mui/material/Tab';

实验性 API

@mui/lab 提供了实用组件,这些组件注入了 props 以实现遵循 WAI-ARIA 创作实践的可访问选项卡

  • <TabList /> - 容纳选项卡的容器。负责处理选项卡之间的焦点和键盘导航。
  • <TabPanel /> - 托管与选项卡关联的内容的卡片。
  • <TabContext /> - 包装 Tab List 和 Tab Panel 组件的顶层组件。
项目一
Enter 开始编辑

包裹标签

长标签将在选项卡上自动换行。如果标签对于选项卡而言太长,则会溢出,并且文本将不可见。

Enter 开始编辑
Enter 开始编辑

禁用选项卡

可以通过设置 disabled prop 来禁用选项卡。

Enter 开始编辑

固定选项卡

固定选项卡应与有限数量的选项卡一起使用,并且当一致的放置有助于肌肉记忆时。

全宽

variant="fullWidth" prop 应用于较小的视图。

项目一

居中

centered prop 应用于较大的视图。

Enter 开始编辑

可滚动选项卡

自动滚动按钮

使用 variant="scrollable"scrollButtons="auto" props 在桌面上显示左右滚动按钮,这些按钮在移动设备上是隐藏的

Enter 开始编辑

强制滚动按钮

应用 scrollButtons={true}allowScrollButtonsMobile prop 以在所有视口上显示左右滚动按钮

Enter 开始编辑

如果您想确保按钮始终可见,则应自定义不透明度。

.MuiTabs-scrollButtons.Mui-disabled {
  opacity: 0.3;
}

阻止滚动按钮

使用 scrollButtons={false} 永远不会显示左右滚动按钮。所有滚动都必须通过用户代理滚动机制启动(例如,左右滑动、Shift 鼠标滚轮等)

Enter 开始编辑

自定义

这是自定义组件的示例。您可以在覆盖文档页面中了解更多信息。

🎨 如果您正在寻找灵感,可以查看 MUI Treasury 的自定义示例

垂直选项卡

要制作垂直选项卡而不是默认的水平选项卡,可以使用 orientation="vertical"

项目一

请注意,您可以使用 visibleScrollbar 恢复滚动条。

默认情况下,选项卡使用 button 元素,但您可以提供自定义标签或组件。这是一个实现选项卡式导航的示例

Enter 开始编辑

第三方路由库

一个常见的用例是在客户端仅执行导航,而无需 HTTP 往返服务器。Tab 组件提供了 component prop 来处理此用例。这是一个更详细的指南

图标选项卡

选项卡标签可以是全部图标或全部文本。

Enter 开始编辑
Enter 开始编辑

图标位置

默认情况下,图标位于选项卡的 top。其他支持的位置是 startendbottom

Enter 开始编辑

无障碍功能

(WAI-ARIA:https://www.w3.org/WAI/ARIA/apg/patterns/tabs/

为了为辅助技术提供必要的信息,需要执行以下步骤

  1. 通过 aria-labelaria-labelledby 标记 Tabs
  2. Tab 需要通过设置正确的 idaria-controlsaria-labelledby 连接到它们对应的 [role="tabpanel"]

可以在此页面上的演示中找到当前实现的示例。我们还在 @mui/lab 中发布了实验性 API,它不需要额外的工作。

键盘导航

这些组件使用“手动激活”行为实现键盘导航。如果您想切换到“选择自动跟随焦点”行为,则必须将 selectionFollowsFocus 传递给 Tabs 组件。WAI-ARIA 创作实践对如何决定何时使选择自动跟随焦点进行了详细的指南。

演示

以下两个演示仅在键盘导航行为上有所不同。聚焦一个选项卡并使用箭头键导航以注意差异,例如 向左箭头键

/* Tabs where selection follows focus */
<Tabs selectionFollowsFocus />
/* Tabs where each tab needs to be selected manually */
<Tabs />

无样式

使用 Base UI Tabs 完全拥有组件的设计,无需覆盖 Material UI 或 Joy UI 样式。此组件的无样式版本是进行大量自定义和缩小捆绑包大小的理想选择。

API

请参阅下面的文档,以获取此处提到的组件的所有可用 props 和类的完整参考。