表格
表格以行和列的形式显示数据集。
简介
Joy UI Table 组件允许您使用纯 HTML 结构在 JSX 中组装表格。
ID | 职位 | 姓名 |
---|---|---|
1 | 医生 | 克里斯·约翰逊 |
2 | 电工 | 约瑟夫·莫里斯 |
3 | 操作员 | 艾登·莫雷诺 |
4 | 面包师 | 迈克·西蒙斯 |
5 | 职员 | 以诺·艾迪生 |
总计 | 4 人 |
<Sheet>
<Table />
</Sheet>
Playground
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
内联样式
控制列宽的另一种方法是在 <th>
元素上使用 内联样式
<thead>
<tr>
<th style={{ width: '40%' }}>Column 1</th>
<th style={{ width: '64px' }}>Column 2</th>
</tr>
</thead>
对齐
使用 sx
prop 使用适当的 CSS 选择器定位列,并应用 text-align
属性。
// target cells that are not the first in their respective rows.
<Table sx={{ '& tr > *:not(:first-child)': { textAlign: 'right' } }}>
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
Variants
Table 支持 Joy UI 的四种全局 variants:plain
(默认)、outlined
、soft
和 solid
。
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
Sizes
该组件有三种尺寸:sm
、md
(默认)和 lg
。
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
Stripe
要在行之间创建对比,请使用 stripe
prop 和 odd
或 even
值。
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
Hover
要在鼠标悬停在表格主体某行上时突出显示该行,请将 hoverRow
prop 设置为 true。
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
Border
使用 borderAxis
prop 控制边框外观。
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
添加自定义边框
使用 extendTheme()
函数,根据 borderAxis
prop 自定义表格主题。
import { CssVarsProvider, extendTheme } from '@mui/joy/styles';
const theme = extendTheme({
components: {
JoyTable: {
styleOverrides: {
root: ({ ownerState }) => ({
...(ownerState.borderAxis === 'header' && {
// this example applies borders between <thead> and <tbody>
'& thead th:not([colspan])': {
borderBottom: '2px solid var(--TableCell-borderColor)',
},
}),
});
}
}
}
})
<CssVarsProvider theme={theme}>…</CssVarsProvider>
对于 TypeScript,您必须通过模块扩充添加新值
// this could be any file that's included in your tsconfig.json
declare module '@mui/joy/Table' {
interface TablePropsBorderAxisOverrides {
header: true;
}
}
Sticky header 和 footer
将 stickyHeader
设置为 true,以便在用户滚动表格时始终将表头固定在顶部。
将 stickyFooter
设置为 true,以便始终将表尾固定在表格底部。
表格主体是可滚动的。
行 | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
1 | 159 | 6 | 24 | 4 |
2 | 237 | 9 | 37 | 4.3 |
3 | 262 | 16 | 24 | 6 |
4 | 305 | 3.7 | 67 | 4.3 |
5 | 356 | 16 | 49 | 3.9 |
6 | 159 | 6 | 24 | 4 |
7 | 237 | 9 | 37 | 4.3 |
8 | 262 | 16 | 24 | 6 |
9 | 305 | 3.7 | 67 | 4.3 |
10 | 356 | 16 | 49 | 3.9 |
总计 | 2638.00 | 101.40 | 402.00 | 45.00 |
3186.4千卡 |
Caption
通过插入 <caption>
元素作为 Table 的第一个子元素,添加一个标题来总结 Table 的内容。
菜单 | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
菜单 | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
总计 | 1,319 | 50.7 | 201 | 22.5 |
Row head
将 scope="row"
设置为 <tbody>
内的 <th>
元素,以应用与列标题相同的样式。下面的演示说明了一个常见的用例:将第一列设置为与标题样式匹配。
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
行和列跨度
使用 rowSpan
和 columnSpan
将单元格扩展到多行或多列。
姓名 | ID | 会员日期 | 余额 | |
---|---|---|---|---|
加入日期 | 取消日期 | |||
玛格丽特·阮 | 427311 | 不适用 | 0.00 | |
爱德华·加林斯基 | 533175 | 37.00 | ||
中村星 | 601942 | 不适用 | 15.00 |
文本省略号
要截断文本,请将 noWrap
设置为 true。表头单元格始终会截断文本,以保持表头的高度可预测。
姓名 | 描述(您应该看到此消息的一部分) |
---|---|
![]() 莫蒂·D·阿迪乌斯德洛伊斯·阿达米 作家,Youtuber | Cras non velit nec nisi vulputate nonummy. Maecenas tincidunt lacus at velit. Vivamus vel nulla eget eros elementum pellentesque. Quisque porta volutpat erat. Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla. |
约瑟夫·莫里索 | ℹ️In eleifend quam a odio。 Suspendisse potenti in hac habitasse platea dictumst。 |
CSS 变量 Playground
试用 Table 组件可用的 CSS 变量,看看设计如何变化。您可以使用这些通过 sx
prop 和主题自定义组件。
姓名 | 角色 |
---|---|
亚当 | 开发者 |
约瑟夫 | 经理 |
<Table />
CSS 变量
与 Sheet 一起使用
import Sheet from @mui/joy/Sheet
当 Table 成为 Sheet 组件的子组件时,表头背景将继承自 Sheet。
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
列宽 (40%) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 |
冰淇淋三明治 | 237 | 9 | 37 | 4.3 |
闪电泡芙 | 262 | 16 | 24 | 6 |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 |
姜饼 | 356 | 16 | 49 | 3.9 |
冷冻酸奶 | 159 | 6 | 24 | 4 | |
---|---|---|---|---|---|
冰淇淋三明治 | 237 | 9 | 37 | 4.3 | |
闪电泡芙 | 262 | 16 | 24 | 6 | |
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 | |
棉花糖 | 318 | 0 | 81 | 2 | |
1–5 / 13 |
← 滚动方向 →
行 | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) | |
---|---|---|---|---|---|
1 | 159 | 6 | 24 | 4 | |
2 | 237 | 9 | 37 | 4.3 | |
3 | 262 | 16 | 24 | 6 | |
4 | 305 | 3.7 | 67 | 4.3 |
甜点(每 100 克份) | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
冷冻酸奶 | 159 | 6 | 24 | 4 | |||||||||||||
历史记录
| |||||||||||||||||
冰淇淋三明治 | 237 | 9 | 37 | 4.3 | |||||||||||||
闪电泡芙 | 262 | 16 | 24 | 6 | |||||||||||||
纸杯蛋糕 | 305 | 3.7 | 67 | 4.3 | |||||||||||||
姜饼 | 356 | 16 | 49 | 3.9 | |||||||||||||
应用全局 variants
使用 theme.variants.*
将全局 variant 样式应用于 Table。
球员 | Gloobles | Za'taak |
---|---|---|
TR-7 | 7 | 4,569 |
Khiresh Odo | 7 | 7,223 |
Mia Oolong | 9 | 6,219 |
表格主体是可滚动的。
行 | 卡路里 | 脂肪 (克) | 碳水化合物 (克) | 蛋白质 (克) |
---|---|---|---|---|
1 | 159 | 6 | 24 | 4 |
2 | 237 | 9 | 37 | 4.3 |
3 | 262 | 16 | 24 | 6 |
4 | 305 | 3.7 | 67 | 4.3 |
5 | 356 | 16 | 49 | 3.9 |
6 | 159 | 6 | 24 | 4 |
7 | 237 | 9 | 37 | 4.3 |
8 | 262 | 16 | 24 | 6 |
9 | 305 | 3.7 | 67 | 4.3 |
10 | 356 | 16 | 49 | 3.9 |