Material UI通过Grid组件实现了他们自己的Flexbox布局。
看起来他们最初想保持自己作为一个纯粹的“组件”库。但其中一位核心开发者决定太重要了,必须拥有自己的布局系统。现在它已经被合并到核心代码中,并且随着v1.0.0版本的发布。
您可以通过以下方式安装:
npm install @material-ui/core
现在它已经出现在官方文档中,并带有示例代码。
Select
,我现在只是用单选按钮替换它,但我相信不久之后Select
会从主干移植过来。 - icc97从材料设计规范描述中得知:
网格列表是标准列表视图的替代品。网格列表与用于布局和其他视觉呈现的网格不同。
如果您正在寻找一个更轻量级的网格组件库,我正在使用React-Flexbox-Grid,这是在 React 中实现 flexboxgrid.css
的方法。
此外,React-Flexbox-Grid 与material-ui和react-toolbox(另一种材料设计实现)完美兼容。
我寻找了解决方法,最好的方式是使用Flex和内联样式来处理不同组件。例如,要将两个Paper组件分成垂直比例为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>
)
}
}
现在,通过一些更多的计算,您可以轻松地在页面上分割组件。
我希望不太晚回复。
我也在寻找一个简单、健壮、灵活且高度可定制的响应式网格系统,以供在我的项目中使用。
我所知道最好的是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>
);
bootstrap-theme.css
和 bootstrap.css
,我只需要后者。// 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>
);
}
↓ CodeSandbox ↓
spacing
不按预期工作。 - L. Pier Roberto<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>