Open1

【Material-ui】gridデザインの実装

yu.miyoshiyu.miyoshi

概要

Material-UIを用いて、gridデザインでコンポーネント作成をしてみる

やったこと

container, itemの基本的な使いかたと、サイズ指定(xsなど)をし想定の構成をつくってみる

目標

こんな感じのgridデザインを作る

結論

以下のコードで目標のレイアウトが作成できる

sample
import React from 'react';
import { makeStyles, createStyles, Theme } from '@material-ui/core/styles';
import Paper from '@material-ui/core/Paper';
import Grid from '@material-ui/core/Grid';

const useStyles = makeStyles((theme: Theme) =>
  createStyles({
    root: {
      flexGrow: 1,
    },
    paper: {
      padding: theme.spacing(2),
      textAlign: 'center',
      color: theme.palette.text.secondary,
    },
  }),
);

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

  return (
    <div className={classes.root}>
      <Grid container spacing={3}>
        <Grid item xs={12}>
          <Paper className={classes.paper}>xs=12</Paper>
        </Grid>
        <Grid item xs={6}>
          <Paper className={classes.paper}>xs=6</Paper>
        </Grid>
        <Grid item xs={6}>
          <Paper className={classes.paper}>xs=6</Paper>
        </Grid>
        <Grid item xs={3}>
          <Paper className={classes.paper}>xs=3</Paper>
        </Grid>
        <Grid item xs={3}>
          <Paper className={classes.paper}>xs=3</Paper>
        </Grid>
        <Grid item xs={3}>
          <Paper className={classes.paper}>xs=3</Paper>
        </Grid>
        <Grid item xs={3}>
          <Paper className={classes.paper}>xs=3</Paper>
        </Grid>
      </Grid>
    </div>
  );
}

注意点

  • 親となるGridにcontainerのattributeを記述する
  • 子となるGridにitemのattributeを記述する
  • 一行のサイズ合計を12(xs=の数値)とする

※子要素内で更に分割したい場合、Gridで囲い親にcontainerの記述をしてあげる

参考サイト

https://material-ui.com/components/grid/