标签页
标签页使浏览和切换不同视图变得容易。
简介
Joy UI 提供了四个与标签页相关的组件
Tabs
:一个上下文提供器,用于同步选定的Tab
和相应的TabPanel
。TabList
:一个包含Tab
项的容器。Tab
:一个用于切换所选标签页的按钮。TabPanel
:当其值与所选标签页匹配时,屏幕上显示的窗格。
<Tabs>
<TabList>
<Tab
variant="plain"
color="neutral">...</Tab>
</TabList>
<TabPanel>...</TabPanel>
</Tabs>
Playground
基础
import Tabs from '@mui/joy/Tabs';
import TabList from '@mui/joy/TabList';
import Tab from '@mui/joy/Tab';
Joy UI 的标签页组件集遵循 WAI ARIA 设计模式指南。
在 Tab Panel 上使用 value
属性,在 Tabs 组件上使用 defaultValue
属性来定位选定的标签页。
禁用的标签页
使用 disabled
属性禁用交互和焦点。
垂直
在 <Tabs />
组件上使用 orientation="vertical"
属性使其垂直。使用箭头键的键盘导航会自动适应。
指示器位置
使用 Tab List 组件上的 underlinePlacement
属性来更改 Tabs 上下划线边框的位置。
使用 indicatorPlacement
属性独立控制选定的 Tab 指示器。
根据下划线和选定指示器的位置,您可能需要更改 Tabs 组件的 flex 方向。
粘性
使用 sticky
属性将 Tab List 组件锚定在顶部或底部。这非常适合涉及较长内容的用例。
Tab flex
在 Tab List 组件上使用 tabFlex
属性使 Tab 元素填充可用空间,如下例所示。
- 在第一个演示中,Tab 元素使用
tabFlex={1}
填充可用空间。 - 在第二个演示中,Tab 元素使用
tabFlex="auto"
平均填充可用空间,但每个元素的宽度都基于其内容。
可滚动标签页
将 overflow: auto
属性添加到 Tab List 组件,使标签页可滚动。
通过使用 '&::-webkit-scrollbar': { display: 'none' }
隐藏滚动条进一步润色,并使用 CSS 滚动捕捉属性 将滚动捕捉到 Tab List 组件的边缘。
<Tabs >
CSS 变量
浏览器标签页
在此示例中,Tab 的 variant 属性设置为 outlined
,指示器通过 indicatorPlacement="top"
移动到顶部。然后,根据选定状态将边框设置为 transparent
。
定价标签页
此示例通过定位 aria-selected="true"
属性来删除选定 Tab 的背景。
开始使用行业标准的 React UI 库,MIT 许可。
$0 - 永久免费
居中标签页
要将 Tab 组件在 Tab List 中居中,请添加 flex: initial
属性以覆盖默认的 flex-grow
行为。然后,在列表上,添加 justifyContent: center
。
移动底部导航
在此示例中,每个 Tab 在选中时都使用主题中的颜色绘制。
无障碍性
为确保适当的无障碍性,WAI-ARIA 创作实践建议将标签与 Tabs 组件关联。有两种方法可以实现这一点
使用 id 属性
在标签页附近添加一个带有 id
属性的文本元素。然后将 aria-labelledby
属性添加到 Tabs 组件。确保为两者使用有意义的标签。
<Typography id="tabs-accessibility-label">Meaningful label</Typography>
<Tabs aria-labelledby="tabs-accessibility-label">...</Tabs>
使用 aria-label
如果 Tabs 组件没有文本元素,请直接使用 aria-label
属性,使其可被屏幕阅读器读取。
<Tabs aria-label="Meaningful label">...</Tabs>
无样式
使用 Base UI Tabs 来完全拥有组件的设计,而无需覆盖 Material UI 或 Joy UI 样式。此组件的无样式版本是需要重度自定义且捆绑包尺寸更小的理想选择。