列表
列表是組織工具,可以增強內容的可讀性和組織性。
簡介
列表透過文字或圖片的連續垂直索引,以簡潔、易於理解的格式呈現資訊。
Joy UI 列表是使用相關元件的集合來實作的
- List - 列表項目的包裝器。預設渲染為
<ul>
。 - List Item - 通用的列表項目。預設渲染為
<li>
。 - List Item Button - 用於列表項目內的操作元素。
- List Item Decorator - 列表項目的裝飾器,通常用於顯示圖示。
- List Item Content - 列表項目內的容器,用於顯示文字內容。
- List Divider - 列表項目之間的分隔符號。
- List Subheader - 巢狀列表的標籤。
- 首頁
- 訂單
<List>
<ListItem>
<ListItemButton>
<ListItemDecorator><Home /></ListItemDecorator>
<ListItemContent>Home</ListItemContent>
<KeyboardArrowRight />
</ListItemButton>
</ListItem>
</List>
Playground
基本用法
import List from '@mui/joy/List';
import ListItem from '@mui/joy/ListItem';
客製化
變體
List 元件支援 Joy UI 的四種全域變體:solid
、soft
、outlined
和 plain
。
尺寸
List 元件提供三種尺寸:sm
、md
和 lg
。List 的尺寸決定了其字體大小和密度。
size="sm"
- 首頁
- 專案
- 設定
size="md"
- 首頁
- 專案
- 設定
size="lg"
- 首頁
- 專案
- 設定
顏色
主題中包含的每個調色盤都可以透過 color
屬性使用。
裝飾器
import ListItemDecorator from '@mui/joy/ListItemDecorator';
使用 List Item Decorator 元件將支援圖示或元素新增至列表項目。
- 🧅 1 個紅洋蔥
- 🍤 2 隻蝦
- 🥓 120 克培根
水平列表
在 List 元件上使用 orientation="horizontal"
屬性以水平顯示列表。
標記
使用具有任何有效 list-style-type 值的 marker
屬性,將標記新增至列表項目。
- 刺激 1995
- 星際大戰
- 首部曲:威脅潛伏
- 二部曲:複製人全面進攻
- 三部曲:西斯大帝的復仇
- 魔戒二部曲:雙城奇謀
省略符號內容
import ListItemContent from '@mui/joy/ListItemContent';
當在列表中使用較長的內容時,您可以結合 List Item Content 元件和 <Typography noWrap />
,以便在內容超出可用空間時顯示省略符號。這有助於保持列表項目的視覺一致性,並防止文字溢出列表項目的容器之外。
這個週末早午餐?
我將在本週二在您家附近辦事。
夏季烤肉
真希望我可以去,但我這週五不在城裡。
分隔線
import ListDivider from '@mui/joy/ListDivider';
List Divider 元件提供四種 inset
模式
- 預設值(未提供
inset
屬性):從列表的一個邊緣延伸到另一個邊緣。 inset="gutter"
:從 List Item Decorator 的開頭到內容的結尾。inset="startDecorator"
:從 List Item Decorator 的開頭到容器邊緣的結尾。inset="startContent"
:從內容的開頭到容器的邊緣。
(預設)
- Mabel Boyle
- Boyd Burt
inset="gutter"
- Mabel Boyle
- Boyd Burt
inset="startDecorator"
- Mabel Boyle
- Boyd Burt
inset="startContent"
- Mabel Boyle
- Boyd Burt
如果您使用的是水平列表,則只有 inset="gutter"
會作為列表分隔線運作。
- Mabel Boyle
- Boyd Burt
- Adam Tris
黏性項目
將 List 元件用作 Sheet 元件的子元件,以建立「黏性」項目。在您希望黏住的項目上,您可以新增 sticky
屬性。
Sheet 元件會自動調整 sticky
列表項目以具有相同的背景,以便在捲動時內容不會溢出。
- 類別1
- 子項目1
- 子項目2
- 子項目3
- 子項目4
- 子項目5
- 子項目6
- 子項目7
- 子項目8
- 子項目9
- 子項目10
- 類別2
- 子項目1
- 子項目2
- 子項目3
- 子項目4
- 子項目5
- 子項目6
- 子項目7
- 子項目8
- 子項目9
- 子項目10
- 類別3
- 子項目1
- 子項目2
- 子項目3
- 子項目4
- 子項目5
- 子項目6
- 子項目7
- 子項目8
- 子項目9
- 子項目10
- 類別4
- 子項目1
- 子項目2
- 子項目3
- 子項目4
- 子項目5
- 子項目6
- 子項目7
- 子項目8
- 子項目9
- 子項目10
- 類別5
- 子項目1
- 子項目2
- 子項目3
- 子項目4
- 子項目5
- 子項目6
- 子項目7
- 子項目8
- 子項目9
- 子項目10
巢狀列表
import ListSubheader from '@mui/joy/ListSubheader';
您可以在 List Item 上使用 nested
屬性來建立巢狀列表。這可讓您新增 List Subheader 以及新的 List 元件作為 List Item 的子元件。巢狀列表將從根 List 元件繼承其 size
以及其他 CSS 變數(例如 --List-radius
和 --ListItem-radius
),以保持設計的一致性。巢狀列表的版面配置和間距將保持獨立。
- 類別 1
- 子項目 1
- 子項目 2
- 類別 2
- 子項目 1
- 子項目 2
互動式列表項目
import ListItemButton from '@mui/joy/ListItemButton';
若要使 List Item 具有互動性,您可以在 List Item 內使用 List Item Button。
- 可點擊的項目
- 開啟新分頁
若要將次要動作新增至 List Item Button,請將其包裝在 List Item 元件中,然後將所需的開始或結束動作元素新增至其中。
- 項目 1
- 項目 2
已選取
在 List Item Button 元件上使用 selected
屬性來指示項目目前是否已選取。當項目已選取時,它會套用 color="primary"
和一些額外的樣式(例如字體粗細),以視覺方式傳達選取狀態。
- 首頁
- 應用程式
- 設定
CSS 變數 playground
試用 List 元件可用的 CSS 變數,以查看設計如何變更。您可以使用這些變數,透過 sx
屬性和主題來自訂元件。
- 首頁
- 產品
線上人員
- Mabel Boyle
- Boyd Burt
<List >
CSS 變數
設定
- MB
Murphy Bates
Apple ID、iCloud、媒體與購買項目
- iCloud+ 功能更新
- Apple TV+ 免費一年
- Wi-Fi
火星
- 藍牙
開啟
- 行動網路
Gmail 導航
靈感來自 Gmail 的桌面導航列。
- 收件匣
1,950
- 已加星號
- 類別
- 社群
4,320
- 更新
22,252
- 文件
- 總覽
- 快速入門
教學課程
9操作指南
39
- 首頁
- 關於
- 入學
無障礙功能
為了確保您的列表具有無障礙功能,以下是一些您應該考量的因素
- 為列表使用適當的 HTML 語意元素(例如
ol
或ul
),以確保輔助技術可以正確解譯列表結構。 - 請務必使用有意義的名稱,在
aria-labelledby
屬性中描述列表的內容。 - 使用
role
屬性來提供有關列表及其項目的用途的其他資訊。例如,對列表使用role="list"
,對每個列表項目使用role="listitem"
。
剖析
List 元件是由根 <ul>
元素和一個或多個由 List Item 元件渲染的子 <li>
元素組成。List Item 內巢狀的所有元件都是選用的。List Divider(如果存在)會渲染 <li>
和 role="separator"
,而List Subheader 則渲染 <div>
。
<ul class="MuiList-root">
<li class="MuiListItem-root">
<div class="MuiListItemButton-root" role="button">
<span class="MuiListItemDecorator-root">
<!-- Icon for List Item Decorator -->
</span>
<div class="MuiListItemContent-root">
<!-- List Item content -->
</div>
</div>
</li>
</ul>
API
請參閱以下文件,以取得此處提及的元件可用的所有屬性和類別的完整參考。