UI материала и Grid-система

89

Я немного играю с Material-UI. Существуют ли какие-либо варианты создания сетки (например, Bootstrap)?

Если нет, каким образом можно добавить эту функциональность?

Существует компонент

  • 0
    Не думайте, что в нем есть какие-либо компоненты для создания адаптивных сеток.
  • 0
    ответ здесь github.com/callemall/material-ui/issues/190
Показать ещё 1 комментарий
Теги:
material-ui
material-design
grid-system

8 ответов

88
Лучший ответ

Пользовательский интерфейс материалов реализовал собственный макет Flexbox.

Кажется, они изначально хотели, чтобы сохранить себя как "библиотеку компонентов". Но один из основных разработчиков решил, что слишком важно не иметь своих собственных. Теперь он слит в основной код, и он будет выпущен с версии v1.0.0.

В настоящее время (сентябрь 2017) он переместился на next/beta branch из альфа, так что, надеюсь, он будет немного более стабильным. Вы можете установить его через:

npm install material-ui@next

Существует предварительный просмотр с примерами кода.

Обновление: Я реализовал свою сетку в проекте, над которым я работаю без проблем.

Обновление 2: Как прокомментированное Suresh, SelectField еще не перенесен

Обновление 3: Поле Select мигрировано с v1.0.0-beta.9

  • 0
    Я вижу, вы опубликовали ответ, который я только собирался добавить! лол. только что ответил на ваш комментарий на текущий ведущий ответ.
  • 3
    принял ваш ответ только для того, чтобы сделать его более заметным
Показать ещё 13 комментариев
32

Из описания спецификаций дизайна материалов:

Списки сетки являются альтернативой стандартным представлениям списка. Списки сетки отличные от сеток, используемых для макетов и других визуальных презентаций.

Если вы ищете очень легкую библиотеку компонентов Grid, я использую React-Flexbox-Grid, реализацию flexboxgrid.css в React.

Кроме того, React-Flexbox-Grid отлично играли как с material-ui, так и react-toolbox (альтернативная реализация материала).

  • 31
    React-Flexbox-Grid плохо реализован на момент написания этой статьи, и для его правильной работы требуется множество внешних зависимостей. Плюс, @Roylee является разработчиком этого ... так что его мнение в любом случае немного предвзято;) ...
  • 1
    Кроме того, response-flexbox-grid зависит от flexboxgrid, который не использует те же самые отзывчивые точки останова, рекомендованные в Material Design. Смотрите: material.io/guidelines/layout/…
Показать ещё 3 комментария
17

Я оглянулся, чтобы ответить на это, и лучшим способом, который я нашел, было использование 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>
    )
  }
}

Теперь, с некоторыми дополнительными вычислениями, вы можете легко разделить свои компоненты на странице.

Дальнейшее чтение в flex

  • 2
    Я согласен, используя свойства flex css, я получил простое форматирование, которое мне было нужно.
8

Я надеюсь, что еще не поздно дать ответ.

Я также искал простую, надежную, гибкую и настраиваемую загрузочную систему, например, систему реагирования на сетку для использования в моих проектах.

Лучшее, что я знаю, это 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>
);
  • 5
    в настоящее время сломан ...
5

Я просто использую https://react-bootstrap.github.io/ для адаптивной компоновки и материала-ui для всего компонента

  • 3
    Я думаю, это немного тяжелый вес :) Есть ли способ включить только стили, связанные с сеткой?
  • 2
    Поэтому при использовании React-Bootstrap все равно нужно включить соответствующий файл CSS. С getbootstrap.com/customize вы можете настроить, чтобы просто включить систему Grid и использовать ее уменьшенную версию ~
3

Мне было трудно найти структуру пользовательского интерфейса, что бы реализовать стандарты Material Design для реагирования на поведение, поэтому я создал два пакета, которые реализуют сетку для Material Design:

Эти пакеты соответствуют стандартам отзывчивого пользовательского интерфейса, описанного Google. Все размеры видовых экранов, указанные в их стандартах, поддерживаются с учетом правильных желобов, рекомендуемого количества столбцов и даже поведения макета, который превышает 1600 дп. Он должен вести себя как рекомендуется для каждого устройства в Руководство пользователя.

3

То, что я делаю, это перейти к http://getbootstrap.com/customize/ и только проверить "сетку" для загрузки. В загруженных файлах есть bootstrap-theme.css и bootstrap.css, и мне нужен только последний.

Таким образом, я могу использовать сетчатую систему Bootstrap, со всем остальным от Material UI.

0

Это старый вопрос, но google привел меня сюда. После небольшого поиска я нашел хороший пакет: https://www.npmjs.com/package/react-grid-system

Я думаю, что это лучший, простой в использовании и легкий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню