【发布时间】:2016-02-13 18:41:40
【问题描述】:
【问题讨论】:
-
不要认为它有任何组件来创建响应式网格。
标签: reactjs material-design material-ui grid-system
【问题讨论】:
标签: reactjs material-design material-ui grid-system
Material UI 已经通过Grid component 实现了自己的 Flexbox 布局。
看来他们initially wanted 将自己保持为纯粹的“组件”库。但核心开发人员之一decided it was too important not to have their own。现在是merged into the core code 和released with v1.0.0。
您可以通过以下方式安装它:
npm install @material-ui/core
【讨论】:
Select Field。我被困在如何使用这些领域。你能帮我解决这个问题吗?
Select,我现在只是用单选按钮替换它,但我相信不久之后选择是从主干移植的。
来自material design specs的描述:
网格列表是标准列表视图的替代方案。网格列表是 不同于用于布局和其他视觉呈现的网格。
如果你正在寻找一个更轻量级的 Grid 组件库,我正在使用 React-Flexbox-Grid,flexboxgrid.css 在 React 中的实现。
最重要的是,React-Flexbox-Grid 与material-ui 和react-toolbox(替代材料设计实现)都很好地配合。
【讨论】:
我四处寻找答案,发现最好的方法是在不同的组件上使用 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>
)
}
}
现在,通过更多计算,您可以轻松地在页面上划分组件。
【讨论】:
我希望现在给出回应还为时不晚。
我还在寻找一种简单、健壮、灵活且高度可定制的引导程序,例如在我的项目中使用的 react 网格系统。
我所知道的最好的是react-pure-gridhttps://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>
);
【讨论】:
我的做法是去http://getbootstrap.com/customize/,只勾选“网格系统”即可下载。下载的文件中有bootstrap-theme.css和bootstrap.css,我只需要后者。
通过这种方式,我可以使用 Bootstrap 的网格系统,以及 Material UI 中的其他所有内容。
【讨论】:
以下纯属MUI Grid system制作,
使用下面的代码,
// 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>
);
}
↓ 代码沙盒 ↓
【讨论】:
spacing 无法按预期工作。
这里是一个类似于 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>
【讨论】: