Я немного играю с Material-UI. Существуют ли какие-либо варианты создания сетки (например, Bootstrap)?
Если нет, каким образом можно добавить эту функциональность?
Я немного играю с Material-UI. Существуют ли какие-либо варианты создания сетки (например, Bootstrap)?
Если нет, каким образом можно добавить эту функциональность?
Пользовательский интерфейс материалов реализовал собственную макет Flexbox с помощью Grid-компонента.
Похоже, что они изначально хотели сохранить себя как "библиотеку компонентов". Но один из разработчиков ядра решил, что слишком важно не иметь своего собственного. Теперь он объединен с основным кодом и выпущен с версией 1.0.0.
Вы можете установить его через:
npm install @material-ui/core
Теперь он находится в официальной документации с примерами кода.
Из описания спецификаций дизайна материалов:
Списки сетки являются альтернативой стандартным представлениям списка. Списки сетки отличные от сеток, используемых для макетов и других визуальных презентаций.
Если вы ищете очень легкую библиотеку компонентов Grid, я использую React-Flexbox-Grid, реализацию flexboxgrid.css
в React.
Кроме того, React-Flexbox-Grid отлично играли как с material-ui, так и react-toolbox (альтернативная реализация материала).
Я оглянулся, чтобы ответить на это, и лучшим способом, который я нашел, было использование Flex и встроенного стиля для разных компонентов.
Например, чтобы два бумажных компонента разделили мой полный экран на два вертикальных компонента (в ранге 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 со всем остальным из Material UI.
Я просто использую https://react-bootstrap.github.io/ для адаптивной компоновки и материала-ui для всего компонента
У меня были трудности с поиском инфраструктуры пользовательского интерфейса, которая бы реализовывала стандарты Material Design для отзывчивого поведения, поэтому я создал два пакета, которые реализуют систему сетки для Material Design:
Эти пакеты соответствуют стандартам для отзывчивого пользовательского интерфейса, изложенным Google. Все размеры области просмотра, указанные в их стандартах, поддерживаются с учетом правильных желобов, рекомендуемого количества столбцов и даже поведения макета, превышающего 1600 dp. Он должен работать в соответствии с рекомендациями для каждого устройства в руководстве Device Metrics.
Это старый вопрос, но google привел меня сюда. После небольшого поиска я нашел хороший пакет: https://www.npmjs.com/package/react-grid-system
Я думаю, что это лучший, простой в использовании и легкий.