【问题标题】:material-ui - change rows' height and padding in tablematerial-ui - 在表格中更改行的高度和填充
【发布时间】:2017-01-05 17:44:49
【问题描述】:

我正在使用来自reactmaterial-uiTable 组件。
出于某种原因,包括标题在内的每一行都有一个24px 填充、顶部和底部,我无法覆盖。
我已经尝试更改所有底层组件的样式,但没有成功。代码如下:

<Table>
    <TableHeader adjustForCheckbox={false} displaySelectAll={false} fixedHeader={true}>
        <TableRow>
            <TableHeaderColumn>id</TableHeaderColumn>
            <TableHeaderColumn>name</TableHeaderColumn>
            <TableHeaderColumn>number</TableHeaderColumn>
        </TableRow>
    </TableHeader>
    <TableBody showRowHover={true} displayRowCheckbox={false}>
        {data.map(item => {
            return (
                <TableRow key={item.id}>
                    <TableRowColumn>{item.id}</TableRowColumn>
                    <TableRowColumn>{item.name}</TableRowColumn>
                    <TableRowColumn>{item.number}</TableRowColumn>
                </TableRow>
            );
        })}
    </TableBody>
</Table>

知道需要如何更改哪个组件的样式以覆盖此样式吗?

【问题讨论】:

    标签: css reactjs material-ui


    【解决方案1】:
    you can set size and paading props in material ui table  
    
        import {Table,} from '@material-ui/core';
        
        <Table size="small" aria-label="a dense table"></Table>
    

    更多详情请参考:https://material-ui.com/api/table/

    并确保表格行内的元素尺寸较小。

    【讨论】:

      【解决方案2】:

      这种需求可以通过 Material UI 中的覆盖来处理,如下例所示:

      第 1 步:包含以下依赖项

      import { ThemeProvider } from '@material-ui/core'
      import { createMuiTheme } from '@material-ui/core/styles';
      

      第 2 步:将自定义 CSS 相关更改定义为

      const theme = createMuiTheme({
          overrides: {
              MuiTableCell: {
                  root: {  //This can be referred from Material UI API documentation. 
                      padding: '4px 8px',
                      backgroundColor: "#eaeaea",
                  },
              },
          },
      });
      

      第 3 步:用

      包装您的组件或代码块
      <ThemeProvider theme={theme}>
          <Table>
              <TableRow>
                   <TableCell component="td" scope="row">
                   </TableCell>
              </TableRow>
          </Table>
      </ThemeProvider>
      

      这就是我们可以从自定义样式中覆盖 Material UI 样式的方法。 快乐编码:)

      【讨论】:

      • 很棒的帖子,谢谢 - 使用我的配置,它似乎会影响所有表格,而不仅仅是包装的表格。你能解释一下吗?
      【解决方案3】:

      问题在于TableRowTableHeaderColumn/TableRowColumnheight 属性。由于某种原因,此属性显示为padding-top/bottom

      长话短说,在行和列上设置height 属性。

      【讨论】:

      • 确实,对于行,TableRow 和 TableRowColumn 都需要在样式中设置一个高度值,以使高度受到超出默认值的影响。表格标题也是如此,其中 TableRow 和 TableHeaderColumn 都需要在其样式中设置一个高度值才能改变高度。这些知识对于需要在有限高度中呈现大量数据的密集布局的应用程序很有用。这种调整打破了 Material UI 预期的空间感,但可以成为特定应用程序的关键推动力。
      • 这里是一个用于实验的小提琴:jsfiddle.net/mobimation/jp3s4159
      【解决方案4】:

      确实,Table 组件中添加了一个填充,as seen here in the code of that component

      material-ui API中不能被覆盖,而且上下文主题变量desktopGutter在很多地方都用到了所以建议不要改。

      您可以做的是使用自定义 CSS 项覆盖它,您将与其他 CSS 捆绑在一起,无论是经典样式表,还是使用 Radium 或类似的“react stye”。

      例如:

      <Table id="mytable">...your material-ui JSX...</Table>
      

      在 CSS 中:

      #mytable .table {
          padding: 0 !important;
      }
      

      编辑:我的错误,这是针对主表格组件,而不是行,但是您可以通过在开发人员工具中查看需要覆盖哪些 CSS 路径来对其他组件执行类似的操作。

      【讨论】:

      • 它不起作用。它只是在继承的填充之上添加了更多的填充。我尝试在 table 和 th 标签上设置填充,但没有成功
      猜你喜欢
      • 2021-03-18
      • 2019-11-01
      • 2020-03-09
      • 1970-01-01
      • 2020-11-17
      • 2020-08-26
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      相关资源
      最近更新 更多