126

我正在玩一点Material-UI。是否有任何用于创建网格布局的选项(如在Bootstrap中)?

如果没有,添加此功能的方法是什么?

有一个GridList 组件,但我想它有一些不同的目的。

4

7 回答 7

133

Material UI 通过Grid 组件实现了自己的 Flexbox 布局。

看来他们最初希望将自己保持为纯粹的“组件”库。但其中一位核心开发人员认为不拥有自己的. 它现在已合并到核心代码中,并与 v1.0.0 一起发布

您可以通过以下方式安装它:

npm install @material-ui/core

它现在在带有代码示例的官方文档中

于 2017-02-26T20:42:05.420 回答
38

材料设计规格的描述:

网格列表是标准列表视图的替代方案。网格列表不同于用于布局和其他视觉呈现的网格。

如果您正在寻找一个非常轻量级的 Grid 组件库,我正在使用React-Flexbox-Grid,它是flexboxgrid.cssReact 中的实现。

最重要的是,React-Flexbox-Grid可以很好地与material-uireact-toolbox(替代材料设计实现)配合使用。

于 2016-02-04T07:47:42.020 回答
21

我四处寻找答案,发现最好的方法是在不同的组件上使用 Flex 和内联样式。

例如,要让两个纸组件将我的全屏分成 2 个垂直组件(比例为 1:4),以下代码可以正常工作。

const styles = {
  div:{
    display: 'flex',
    flexDirection: 'row wrap',
    padding: 20,
    width: '100%'
  },
  paperLeft:{
    flex: 1,
    height: '100%',
    margin: 10,
    textAlign: 'center',
    padding: 10
  },
  paperRight:{
    height: 600,
    flex: 4,
    margin: 10,
    textAlign: 'center',
  }
};

class ExampleComponent extends React.Component {
  render() {
    return (
      <div>
        <div style={styles.div}>
          <Paper zDepth={3} style={styles.paperLeft}>
            <h4>First Vertical component</h4>
          </Paper>
          <Paper zDepth={3} style={styles.paperRight}>
              <h4>Second Vertical component</h4>
          </Paper>
        </div>
      </div>
    )
  }
}

现在,通过更多计算,您可以轻松地在页面上划分组件。

进一步阅读 flex

于 2016-03-08T05:22:24.830 回答
12

我希望现在给出回应还为时不晚。

我也在寻找一个简单、健壮、灵活和高度可定制的引导程序,如反应网格系统,以在我的项目中使用。

我所知道的最好的是react-pure-grid https://www.npmjs.com/package/react-pure-grid

react-pure-grid使您能够自定义网格系统的各个方面,同时它内置了可能适合任何项目的默认值

用法

npm install react-pure-grid --save

-

import {Container, Row, Col} from 'react-pure-grid';

const App = () => (
      <Container>
        <Row>
          <Col xs={6} md={4} lg={3}>Hello, world!</Col>
        </Row>
        <Row>
            <Col xsOffset={5} xs={7}>Welcome!</Col>
        </Row>
      </Container>
);
于 2016-10-26T05:38:27.853 回答
9

我这样做的方法是去http://getbootstrap.com/customize/并且只检查“网格系统”来下载。下载的文件中有bootstrap-theme.cssbootstrap.css,我只需要后者。

通过这种方式,我可以使用 Bootstrap 的网格系统,以及 Material UI 中的所有其他内容。

于 2017-01-12T03:33:07.130 回答
3

下面是纯MUI Grid系统制作的,

MUI - 网格布局

使用下面的代码,

// MuiGrid.js

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Grid from "@material-ui/core/Grid";

const useStyles = makeStyles(theme => ({
  root: {
    flexGrow: 1
  },
  paper: {
    padding: theme.spacing(2),
    textAlign: "center",
    color: theme.palette.text.secondary,
    backgroundColor: "#b5b5b5",
    margin: "10px"
  }
}));

export default function FullWidthGrid() {
  const classes = useStyles();

  return (
    <div className={classes.root}>
      <Grid container spacing={0}>
        <Grid item xs={12}>
          <Paper className={classes.paper}>xs=12</Paper>
        </Grid>
        <Grid item xs={12} sm={6}>
          <Paper className={classes.paper}>xs=12 sm=6</Paper>
        </Grid>
        <Grid item xs={12} sm={6}>
          <Paper className={classes.paper}>xs=12 sm=6</Paper>
        </Grid>
        <Grid item xs={6} sm={3}>
          <Paper className={classes.paper}>xs=6 sm=3</Paper>
        </Grid>
        <Grid item xs={6} sm={3}>
          <Paper className={classes.paper}>xs=6 sm=3</Paper>
        </Grid>
        <Grid item xs={6} sm={3}>
          <Paper className={classes.paper}>xs=6 sm=3</Paper>
        </Grid>
        <Grid item xs={6} sm={3}>
          <Paper className={classes.paper}>xs=6 sm=3</Paper>
        </Grid>
      </Grid>
    </div>
  );
}

↓ 代码沙盒 ↓

编辑 MUI-Grid 系统

于 2020-02-03T21:26:57.027 回答
2

这是一个类似于 bootstrap 的带有 material-ui 的网格系统示例:

<Grid container>
    <Grid item xs={12} sm={4} md={4} lg={4}>
    </Grid>
    <Grid item xs={12} sm={4} md={4} lg={4}>
    </Grid>
 </Grid>
于 2020-01-23T13:10:35.337 回答