Я немного поиграю с Material-UI . Есть ли какие-нибудь варианты создания макета сетки (как в Bootstrap )?
Если нет, как можно добавить эту функцию?
Есть компонент GridList, но я предполагаю, что он имеет другое назначение.
Я немного поиграю с Material-UI . Есть ли какие-нибудь варианты создания макета сетки (как в Bootstrap )?
Если нет, как можно добавить эту функцию?
Есть компонент GridList, но я предполагаю, что он имеет другое назначение.
Ответы:
Пользовательский интерфейс Material реализовал собственный макет Flexbox через компонент Grid .
Похоже, они изначально хотели сохранить себя просто библиотекой «компонентов». Но один из основных разработчиков решил, что не иметь своего собственного было слишком важно . Теперь он был объединен с основным кодом и выпущен с версией 1.0.0 .
Вы можете установить его через:
npm install @material-ui/core
Теперь он находится в официальной документации с примерами кода .
Select Field
. Я застрял в том, как использовать такие поля. Вы можете мне помочь?
Select
он отсутствует, я только что заменил его переключателями, но я уверен, что скоро выбор будет перенесен из магистрали.
Из описания спецификаций материального дизайна :
Списки сетки являются альтернативой стандартным представлениям списков. Списки сеток отличаются от сеток, используемых для макетов и других визуальных презентаций.
Если вам нужна гораздо более легкая библиотека компонентов 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-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>
);
Я захожу на http://getbootstrap.com/customize/ и проверяю только «сетку» для загрузки. Есть bootstrap-theme.css
и bootstrap.css
в загруженных файлах, и мне нужно только последнее.
Таким образом, я могу использовать сеточную систему Bootstrap со всем остальным из UI материала.
Я просто использую https://react-bootstrap.github.io/ для адаптивного макета и Material-ui для всех компонентов.
Мне было сложно найти структуру пользовательского интерфейса, которая бы реализовывала стандарты Material Design для отзывчивого поведения, поэтому я создал два пакета, реализующих сеточную систему для Material Design:
Эти пакеты соответствуют стандартам отзывчивого пользовательского интерфейса, установленным Google. Поддерживаются все размеры области просмотра, указанные в их стандартах, с учетом правильных желобов, рекомендуемого количества столбцов и даже поведения макета, превышающего 1600 dp. Он должен вести себя так, как рекомендовано для каждого устройства в руководстве по показателям устройств .
Ниже приведено чисто MUI Grid система ,
С кодом ниже
// 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 ↓
Это старый вопрос, но Google привел меня сюда. После небольшого поиска я нашел хороший пакет: https://www.npmjs.com/package/react-grid-system
Я считаю, что это лучший, простой в использовании и легкий.