Макет пользовательского интерфейса материала — 3 столбца

#reactjs #material-ui #grid

#reactjs #материал-пользовательский интерфейс #сетка

Вопрос:

Я хочу создать свой макет примерно так, используя material UI, я изучил его и подумываю об использовании компонента Grid, но как мне реализовать что-то подобное для среднего столбца в две строки??

сетка

Комментарии:

1. пожалуйста, опубликуйте некоторый код

Ответ №1:

Пример кода

Я использую Grid компонент пользовательского интерфейса материала в следующем коде.

 import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Grid from "@material-ui/core/Grid";
import clsx from "clsx";

const useStyles = makeStyles({
  container: {
    height: "100%", // So that grids 1 amp; 4 go all the way down
    minHeight: 150, // Give minimum height to a div
    border: "1px solid black",
    fontSize: 30,
    textAlign: "center"
  },
  containerTall: {
    minHeight: 250 // This div has higher minimum height
  }
});

export default function App() {
  const classes = useStyles();

  return (
    <Grid container direction="row" spacing={2}>
      <Grid item xs>
        <div className={classes.container}>1</div>
      </Grid>
      <Grid item container direction="column" xs spacing={2}>
        <Grid item xs>
          <div className={classes.container}>2</div>
        </Grid>
        <Grid item xs>
          <div className={clsx(classes.container, classes.containerTall)}>
            3
          </div>
        </Grid>
      </Grid>
      <Grid item xs>
        <div className={classes.container}>4</div>
      </Grid>
    </Grid>
  );
}
 

Редактировать в песочнице

Приведенный выше код сгенерирует следующий результат:

Результаты

Объяснение

Общая структура сетки выглядит следующим образом:

 <Grid container direction="row">
  <Grid item xs />
  <Grid item xs container direction="column">
    <Grid item xs />
    <Grid item xs />
  </Grid>
  <Grid item xs />
</Grid>
 

Сначала мы создаем контейнер сетки с гибким направлением строки. Внутри контейнера мы помещаем 3 Grid компонента элемента, чтобы они выровнялись слева направо. Для второго (среднего) Grid элемента мы также определяем его как контейнер с гибким направлением столбца. Внутри него мы размещаем два Grid элемента так, чтобы один был сверху, а другой снизу.

Обратите внимание, что я добавил, в частности, для кода grid 3 className={clsx(classes.container, classes.containerTall)} . По сути, это говорит о том, что мы будем применять classes.container and classes.containerTall к этой сетке. Вы можете прочитать этот раздел подробнее clsx() .

Чтобы сделать сетку 3 немного выше сетки 2, я установил minHeight для сетки 2 150px значение, в то время minHeight как для сетки 3 установлено значение 250px .

Ответ №2:

Вы можете использовать автоматическую компоновку отсюда

https://material-ui.com/components/grid/#auto-layout

Структура должна быть

  • Col
  • Col
  • —- Ряд (3 размера)
  • —- Ряд (3 размера)
  • Col