css 材质UI v1 -设置表格列宽

h22fl7wq  于 2023-05-19  发布在  其他
关注(0)|答案(7)|浏览(100)

我想使用css在Material UI表格上设置列宽(而不是在react内部使用“classes”)。但我不明白列宽是如何控制的。我尝试设置宽度上的TH列,但它不工作。
参见示例:Material ui table example(参见style.css)
我不明白Material UI表格上的Simple Table是如何控制表格列宽的:简单表(您可以看到第一列比其他列宽。怎么做?)
那么它是如何工作的,我如何修改设置?

zzwlnbp8

zzwlnbp81#

尝试使用colgroup,在Material-UI V1中为我工作

<Table>
   <colgroup>
      <col style={{width:'10%'}}/>
      <col style={{width:'20%'}}/>
      <col style={{width:'70%'}}/>
   </colgroup>
   <TableHead>
      <TableRow>
         <TableCell>Head1</TableCell>
         <TableCell>Head2</TableCell>
         <TableCell>Head3</TableCell>
      </TableRow>
   </TableHead>
   <TableBody>
      <TableRow>
         <TableCell>Data1</TableCell>
         <TableCell>Data2</TableCell>
         <TableCell>Data3</TableCell>
      </TableRow>
   </TableBody>
</Table>
t2a7ltrp

t2a7ltrp2#

我在以下方面取得了成功:

<Table>
<colgroup>
    <col width="10%" />
    <col width="10%" />
    <col width="60%" />
    <col width="10%" />
    <col width="10%" />
</colgroup>
<TableHead>....
    ... yada yada...
</Table>

或者,更具体地,给定宽度colWidths的数组:

<Table key={this.props.key + "_table"} className={classes.table}>
    <colgroup>
        {this.props.colWidths.map((colWidth, i) => <col key={"colWidth_"+i} width={colWidth}/>)}
    </colgroup>
    <TableHead>
        <TableRow>
            {tableHeaders}
        </TableRow>
    </TableHead>
    <TableBody>
        {tableRows}
    </TableBody>
</Table>
niwlg2el

niwlg2el3#

使用百分比设置宽度效果很好。

<TableHead>
              <TableRow>
                {columns.map((column) => (
                  <TableCell
                    key={column.id}
                    align={column.align}
                    width="10%"
                  >
                    {column.label}
                  </TableCell>
                ))}
              </TableRow>
            </TableHead>
yvgpqqbh

yvgpqqbh4#

我的解决方案是使用tableLayout: 'fixed'以及固定的列像素值宽度。
colgroup选项不起作用。

1tuwyuhd

1tuwyuhd5#

为了给每列提供宽度,colspan比固定宽度更好,它将使表格根据屏幕/网格大小做出响应。例如,您可以将colSpan={4}放在列组件上。在colspan table-layout: fixed样式中固定列宽会有所帮助。因此,表将响应,但具有固定的列宽度。

deyfvvtc

deyfvvtc6#

我的解决方案是用Box组件 Package TableCell内容,并设置Box的样式,来自我的github评论:https://github.com/mui-org/material-ui/issues/1911#issuecomment-759935300

...
const useStyles = makeStyles((theme: Theme) => createStyles({
  ...
  longTextStyle: {
    wordWrap: 'break-word',
    maxWidth: 1000,
  },
  ...
}));
...
<TableCell>
  <Box className={classes.longTextStyle}>
    {longText}
  </Box>
</TableCell>
...
jchrr9hc

jchrr9hc7#

这看起来比我的第一个假设要困难一些,因为它没有根据表组件的基础创建一种多米诺骨牌效应,但是I did find this discussion有很多人希望用许多不同的方法做同样的事情。我会在那里进行排序,看看什么最适合您的特定用例(如果没有看到您的代码,我不知道推荐什么是最安全的)。
同样,如果我们在table上检查你给出的例子,我们可以得到一个体面的想法(乍一看有点混乱)他们是如何做到这一点的。

我盲目地推荐像<Table fixedHeader={false} style={{ width: "auto", tableLayout: "auto" }}>这样的东西,它允许您的表根据内容动态地调整大小,而不是保持相同的大小。
希望这至少能帮你指明正确的方向!请让我知道如果不是。

相关问题