Item One
<AppBar position="static">
<Tabs value={value} onChange={handleChange} aria-label="simple tabs example">
<Tab label="Item One" {...a11yProps(0)} />
<Tab label="Item Two" {...a11yProps(1)} />
<Tab label="Item Three" {...a11yProps(2)} />
</Tabs>
</AppBar>
<TabPanel value={value} index={0}>
Item One
</TabPanel>
<TabPanel value={value} index={1}>
Item Two
</TabPanel>
<TabPanel value={value} index={2}>
Item Three
</TabPanel>
Item One
<Paper square>
<Tabs
value={value}
indicatorColor="primary"
textColor="primary"
onChange={handleChange}
aria-label="disabled tabs example"
>
<Tab label="Active" />
<Tab label="Disabled" disabled />
<Tab label="Active" />
</Tabs>
</Paper>
固定的选项卡
固定的标签应与定量的选项卡一起使用,而将它们整齐放置则会有助于用户的肌肉记忆。
全宽
若是较小的视图,则应使用 variant="fullWidth"
属性。 在这个演示中你还可以借鉴用 react-swipeable-views 来设置选项卡的过渡动画,并且在使用触摸设备时滑动标签。
<Paper className={classes.root}>
<Tabs
value={value}
onChange={handleChange}
indicatorColor="primary"
textColor="primary"
centered
>
<Tab label="Item One" />
<Tab label="Item Two" />
<Tab label="Item Three" />
</Tabs>
</Paper>
Item One
Item One
Item One
自定义的选项卡
以下是自定义组件的一个示例。 您可以在 重写文档页面 中了解更多有关此内容的信息。
<div className={classes.demo1}>
<AntTabs value={value} onChange={handleChange} aria-label="ant example">
<AntTab label="Tab 1" />
<AntTab label="Tab 2" />
<AntTab label="Tab 3" />
</AntTabs>
<Typography className={classes.padding} />
</div>
<div className={classes.demo2}>
<StyledTabs value={value} onChange={handleChange} aria-label="styled tabs example">
<StyledTab label="Workflows" />
<StyledTab label="Datasets" />
<StyledTab label="Connections" />
</StyledTabs>
<Typography className={classes.padding} />
</div>
🎨 如果您还在寻找灵感,您可以看看 MUI Treasury 特别定制的一些例子。
垂直的选项卡
Item One
<Paper square className={classes.root}>
<Tabs
value={value}
onChange={handleChange}
variant="fullWidth"
indicatorColor="primary"
textColor="primary"
aria-label="icon tabs example"
>
<Tab icon={<PhoneIcon />} aria-label="phone" />
<Tab icon={<FavoriteIcon />} aria-label="favorite" />
<Tab icon={<PersonPinIcon />} aria-label="person" />
</Tabs>
</Paper>
<Paper square className={classes.root}>
<Tabs
value={value}
onChange={handleChange}
variant="fullWidth"
indicatorColor="secondary"
textColor="secondary"
aria-label="icon label tabs example"
>
<Tab icon={<PhoneIcon />} label="RECENTS" />
<Tab icon={<FavoriteIcon />} label="FAVORITES" />
<Tab icon={<PersonPinIcon />} label="NEARBY" />
</Tabs>
</Paper>
无障碍设计
(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#tabpanel)
您需要采取以下步骤,来为无障碍技术提供一些必要的信息:
- 在
Tabs
上应用aria-label
或aria-labelledby
标签。 - 通过设置
id
、aria-controls
和aria-labelledby
,Tab
需要连接到其对应的[role="tabpanel"]
。
实现这样的设计例子可以在本页面的演示中找到。 我们还在 @material-ui/lab
中发布了不需要额外工作就能使用的 一个实验性的 API。
键盘导航
该组件使用“手动激活”的行为来实现键盘导航。 如果你想切换到“选择自动跟随焦点”(selection automatically follows focus)的行为,你必须将 selectionFollowsFocus
传递给 Tabs
组件。 WAI-ARIA 项目实践中有一个详细的指南关于 how to decide when to make selection automatically follow focus。
演示
下面的两个演示只是在键盘导航行为上有所区别。 聚焦到其中一个选项卡,然后用方向键导航你就可以注意到其中的差异。
/* 那个跟随焦点的选项卡 */
<Tabs selectionFollowsFocus />
/* 需要手动选择选项卡中的每一个选项 */
<Tabs />
Tabs where selection follows focus
Tabs where each tab needs to be selected manually
Item One
实验性的 API
遵循 WAI-ARIA 项目实践,@material-ui/lab
提供了工具集组件,该组件通过注入属性的方式来实现无障碍设计的选项卡。
<TabContext value={value}>
<AppBar position="static">
<TabList onChange={handleChange} aria-label="simple tabs example">
<Tab label="Item One" value="1" />
<Tab label="Item Two" value="2" />
<Tab label="Item Three" value="3" />
</TabList>
</AppBar>
<TabPanel value="1">Item One</TabPanel>
<TabPanel value="2">Item Two</TabPanel>
<TabPanel value="3">Item Three</TabPanel>
</TabContext>