跳到内容
+

表格

表格以行和列的形式显示数据集。

简介

Joy UI Table 组件允许您使用纯 HTML 结构在 JSX 中组装表格。

表格是可滚动的。
ID职位姓名
1医生克里斯·约翰逊
2电工约瑟夫·莫里斯
3操作员艾登·莫雷诺
4面包师迈克·西蒙斯
5职员以诺·艾迪生
总计4 人
<Sheet>
  <Table />
</Sheet>

Playground


基础知识

Joy UI Table 将基于使用 <thead><tbody><tfoot> 元素的表格结构应用样式。

import Table from '@mui/joy/Table';
甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

自定义

列宽

使用 sx prop 定位表头并提供宽度(数字或百分比)。

没有明确宽度的列将平均展开以填充剩余区域。

列宽 (40%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.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%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

Variants

Table 支持 Joy UI 的四种全局 variantsplain(默认)、outlinedsoftsolid

甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

Sizes

该组件有三种尺寸:smmd(默认)和 lg

甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

Stripe

要在行之间创建对比,请使用 stripe prop 和 oddeven 值。

甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

Hover

要在鼠标悬停在表格主体某行上时突出显示该行,请将 hoverRow prop 设置为 true。

列宽 (40%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

Border

使用 borderAxis prop 控制边框外观。

甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.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;
  }
}

stickyHeader 设置为 true,以便在用户滚动表格时始终将表头固定在顶部。

stickyFooter 设置为 true,以便始终将表尾固定在表格底部。

表格主体是可滚动的。

卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
11596244
22379374.3
326216246
43053.7674.3
535616493.9
61596244
72379374.3
826216246
93053.7674.3
1035616493.9
总计2638.00101.40402.0045.00
3186.4千卡

Caption

通过插入 <caption> 元素作为 Table 的第一个子元素,添加一个标题来总结 Table 的内容。

标题应该是表格的摘要。
菜单卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

使用 <tfoot> 向 Table 添加页脚。

标题应该是表格的摘要。
菜单卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9
总计1,31950.720122.5

Row head

scope="row" 设置为 <tbody> 内的 <th> 元素,以应用与列标题相同的样式。下面的演示说明了一个常见的用例:将第一列设置为与标题样式匹配。

列宽 (40%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

行和列跨度

使用 rowSpancolumnSpan 将单元格扩展到多行或多列。

姓名ID会员日期余额
加入日期取消日期
玛格丽特·阮427311不适用0.00
爱德华·加林斯基53317537.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 变量


px
px
px
px

与 Sheet 一起使用

import Sheet from @mui/joy/Sheet 当 Table 成为 Sheet 组件的子组件时,表头背景将继承自 Sheet。

您最喜欢的菜单的营养成分。
列宽 (40%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

颜色反转

启用颜色反转后,Table 的样式将根据其variant 进行调整。

您最喜欢的菜单的营养成分。
列宽 (40%)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

常见示例

排序和选择

使用表单组件(例如 ButtonSelectSwitch)来创建排序和选择功能。

营养成分
冷冻酸奶1596244
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
棉花糖3180812

1–5 / 13

← 滚动方向 →

卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
11596244
22379374.3
326216246
43053.7674.3
甜点(每 100 克份)卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
冷冻酸奶1596244
历史记录
日期客户金额总价 ($)
2020-01-0511091700311.97
2020-01-02匿名13.99
冰淇淋三明治2379374.3
闪电泡芙26216246
纸杯蛋糕3053.7674.3
姜饼35616493.9

应用全局 variants

使用 theme.variants.* 将全局 variant 样式应用于 Table。

外星足球明星
球员GlooblesZa'taak
TR-774,569
Khiresh Odo77,223
Mia Oolong96,219

滚动阴影

受 Lea Verou 关于 CSS 滚动阴影 这篇文章的启发,阴影在 Table 上滚动时出现和隐藏。

表格主体是可滚动的。

卡路里脂肪 (克)碳水化合物 (克)蛋白质 (克)
11596244
22379374.3
326216246
43053.7674.3
535616493.9
61596244
72379374.3
826216246
93053.7674.3
1035616493.9

API

请参阅下面的文档,以获取此处提到的组件的所有可用 props 和类的完整参考。