分頁
分頁讓瀏覽和切換不同視圖變得容易。
簡介
Joy UI 提供了四個與分頁相關的元件
Tabs
:一個 context provider,用於同步選定的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
prop,在 Tabs 元件上使用 defaultValue
prop 來指定選定的分頁。
停用的分頁
使用 disabled
prop 來停用互動和焦點。
垂直
在 <Tabs />
元件上使用 orientation="vertical"
prop 使其垂直。使用箭頭鍵的鍵盤導航會自動適應。
指示器位置
在 Tab List 元件上使用 underlinePlacement
prop 來更改 Tabs 上底線邊框的位置。
使用 indicatorPlacement
prop 獨立控制選定的 Tab 指示器。
根據底線和選定指示器的位置,您可能需要更改 Tabs 元件的 flex 方向。
黏性
使用 sticky
prop 將 Tab List 元件錨定在頂部或底部。這非常適合涉及較長內容的用例。
分頁彈性
在 Tab List 元件上使用 tabFlex
prop 使 Tab 元素填滿可用空間,如下例所示。
- 在第一個演示中,Tab 元素使用
tabFlex={1}
填滿可用空間。 - 在第二個演示中,Tab 元素使用
tabFlex="auto"
平均填滿可用空間,但每個元素的寬度都基於其內容。
可滾動分頁
將 overflow: auto
屬性新增至 Tab List 元件,使分頁可滾動。
進一步優化,通過 '&::-webkit-scrollbar': { display: 'none' }
隱藏滾動條,並使用 CSS scroll snap 屬性將滾動吸附到 Tab List 元件的邊緣。
<Tabs >
CSS 變數
瀏覽器分頁
在此範例中,Tab 的 variant prop 設定為 outlined
,指示器通過 indicatorPlacement="top"
移至頂部。然後根據選定狀態將邊框設定為 transparent
。
定價分頁
此範例通過鎖定 aria-selected="true"
屬性來移除選定 Tab 的背景。
開始使用業界標準的 React UI 函式庫,MIT 授權。
$0 - 永久免費
置中分頁
若要將 Tab 元件置中於 Tab List 中,請新增 flex: initial
屬性以覆寫預設的 flex-grow
行為。然後,在列表中新增 justifyContent: center
。
行動裝置底部導航
在此範例中,每個 Tab 在選定時都會以主題中的顏色繪製。
無障礙功能
為確保適當的無障礙功能,WAI-ARIA Authoring Practices 建議將標籤與 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 樣式。此無樣式版本的元件是高度客製化和較小套件大小的理想選擇。