material-ui - 如何使用 Material-UI Grid 创建这个 'layout'?

标签 material-ui grid-layout

我正在尝试使用 Material-UI 网格生成以下布局...到目前为止,我只设法暴露了我对整个事情的了解有多么少。

我要创建的是:

Desired Outcome

我认为这等同于这种设计:

Basic Plan

所以我的想法是这个结构...

<Grid container xs={12} spacing={3}>

  <Grid item xs={12} >
    <Paper className={classes.paper}>
      Top Bar
    </Paper>
  </Grid>

  <Grid container xs={12} spacing={3}>    
      <Grid container spacing={3}>
        <Paper className={classes.paper}>

          <Grid item xs={4}>
            Main Field
          </Grid>

          <Grid container xs={8}>
            <Grid container item xs={8}>
              <Grid item xs={4}>
                field 1 row 1
              </Grid>
              <Grid item xs={4}>
                field 2 row 1
              </Grid>
            </Grid>
            <Grid container item xs={8}>
              <Grid item xs={4}>
                field 1 row 2
              </Grid>
              <Grid item xs={4}>
                field 2 row 2
              </Grid>
            </Grid>
            <Grid container item xs={8}>
              <Grid item xs={4}>
                field 1 row 3
              </Grid>
              <Grid item xs={4}>
                field 2 row 3
              </Grid>
            </Grid>
          </Grid>
        </Paper>
      </Grid>
    </Grid>
  </Grid>

</Grid>

... 这一点都不像。一开始我无法让它以全宽显示。

我试过向各种元素添加 width={1} 属性,但没有成功。有人能给我指出正确的方向吗,或者更好的是,我是否缺少一些开发工具来使用 Material-UI 网格或类似工具来组成“布局”?

最佳答案

我设法通过开始使用 complex grid section 上的网格引用来创建您的布局的文档。

通过组合 rowcolumn 方向作为最内层 Grids 的 props 并将子 Grids 外部 Paper 组件放入内部作为占位符,我们可以实现您正在寻找的东西.

代码看起来像这样:

export default function ComplexGrid() {
  return (
    <div>
      <Paper>
        <Grid container spacing={3}>
          <Grid item xs={12}>
            <Paper>xs=12</Paper>
          </Grid>
          <Grid item xs={12} container>
            <Grid item xs container direction="column" spacing={3}>
              <Grid item xs={4}>
                <Paper>xs=4</Paper>
              </Grid>
              <Grid item xs={8}>
                <Paper>
                  <Grid item xs container direction="column" spacing={2}>
                    <Grid item xs={12}>
                      <Paper>
                        <Grid item xs container direction="row" spacing={1}>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                        </Grid>
                      </Paper>
                    </Grid>
                    <Grid item xs={12}>
                      <Paper>
                        <Grid item xs container direction="row" spacing={1}>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                        </Grid>
                      </Paper>
                    </Grid>
                    <Grid item xs={12}>
                      <Paper>
                        <Grid item xs container direction="row" spacing={1}>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                          <Grid item xs={6}>
                            <Paper>xs=4</Paper>
                          </Grid>
                        </Grid>
                      </Paper>
                    </Grid>
                  </Grid>
                </Paper>
              </Grid>
            </Grid>
          </Grid>
        </Grid>
      </Paper>
    </div>
  );
}

这是一个codesandbox带有代码的工作示例以及一些不太好的论文样式,但仅用作概念证明。当然,您可以根据需要更改边距、填充、大小和其他任何内容。

关于material-ui - 如何使用 Material-UI Grid 创建这个 'layout'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756016/

相关文章:

javascript - 如何在单击时更改 ListItem 的样式?

java - 单击 Jbutton 时,按钮会移动或标签文本会更改。我只想同时执行这两个操作

html - 如何在 css 网格单元格中定位元素?

reactjs - material-ui v1中Input元素的事件类型是什么?

javascript - 将按钮作为 Material-ui 表中的 TableRowColumn

reactjs - 类型错误 : Cannot read properties of undefined (reading 'main' )

javascript - 将 className 传递给 React 组件

html - 在多个嵌套的 div 中居中 div 内容

css - "grid-template-rows: auto auto 1fr auto"是如何解释的?

java - 无法将图像添加到 JPanel GridLayout 的特定单元格网格