マテリアルUIとグリッドシステム


118

Material-UIで少し遊んでいます。(Bootstrapのように)グリッドレイアウトを作成するためのオプションはありますか?

そうでない場合、この機能を追加する方法は何ですか?

GridListコンポーネントがありますが、それはいくつかの異なる目的を持っていると思います。


レスポンシブグリッドを作成するためのコンポーネントはありません。
ラッキーチンギ2015年

回答:


126

マテリアルUIは、グリッドコンポーネントを介して独自のFlexboxレイアウトを実装しています

彼らは当初、自分たちを純粋に「コンポーネント」ライブラリとして維持したかったようです。しかし、コア開発者の1人は、独自の開発者がいないことが重要であると判断しました。これはコアコードに統合され、v1.0.0リリースされました

次の方法でインストールできます。

npm install @material-ui/core

これは、コード例を含む公式ドキュメントに含まれています


私が追加しようとしていた回答を投稿してくれたようです!笑。現在の主要な回答についてのコメントに応答しました。
クリーンシューター2017

インストールされ、Material UIのalphaブランチが使用されます。レイアウトシステムが正常に動作していることを確認できます。
user2875289 2017

3
グリッドシステムは正常に動作しますが、など、まだ実装されていないコンポーネントがいくつかありますSelect Field。私はそのようなフィールドの使い方にこだわっています。これを手伝ってくれませんか?
Suresh Mainali 2017年

1
私も同じ問題に直面しているので、@ SureshMainaliに同意します。ほとんどのコンポーネントには小道具がなく、カスタムテーマの実装に関しても同様です
サイラム

@SaiRamほとんど言うことはありませんが、実際にSelectはありません。今のところラジオボタンに置​​き換えただけですが、selectがトランクから移植されるまでに長くはかからないでしょう。
icc97

35

マテリアルデザインの仕様の説明から:

グリッドリストは、標準のリストビューに代わるものです。グリッドリストは、レイアウトやその他の視覚的プレゼンテーションに使用されるグリッドとは異なります。

非常に軽量なグリッドコンポーネントライブラリを探している場合は、Reactの実装であるReact-Flexbox-Gridを使用していflexboxgrid.cssます。

その上、React-Flexbox-Gridは、material-uireact-toolbox(代替のマテリアルデザインの実装)の両方でうまく機能しました。


32
React-Flexbox-Gridは、この投稿の時点では十分に実装されておらず、適切に機能するためには、はるかに多くの外部依存関係が必要です。さらに、@ Royleeはその開発者です...だからとにかく彼の意見は少し偏っています;)...
Cleanshooter

1
また、react-flexbox-gridはflexboxgridに依存しています。これは、マテリアルデザインで推奨されているものと同じレスポンシブブレークポイントを使用しません。参照:material.io/guidelines/layout/...
ケン・グレゴリー

@Cleanshooterこれはあなたの競合バージョンですか?おそらくあなたも少し偏っています:)
icc97

@ icc97はい、いいえ。実際に「競争」するつもりはなかったのですが、これは私が構築していたアプリのストップギャップのようなものでした。私は両方に失望した後でそれを作りました... CallEmAllの関係者がMaterial-UIの最新リリースにグリッドシステムを含んでいたので、それは本当にもう問題ではありません。個人的にはまだ試していません。github.com/callemall/material-ui/pull/5808
Cleanshooter

1
@Cleanshooterあなたのものはかなりよさそうだった。私は新しいMaterial-UIグリッドをテストしてきましたが、これまでのところうまくいきます。
icc97

20

私はこれに対する答えを探しましたが、私が見つけた最良の方法は、さまざまなコンポーネントにFlexとインラインスタイルを使用することでした。

たとえば、2つの紙のコンポーネントでフルスクリーンを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>
    )
  }
}

これで、さらにいくつかの計算を使用して、コンポーネントをページ上で簡単に分割できます。

フレックスについてさらに読む


2
同意します。フレックスcssプロパティを使用すると、必要な簡単な書式設定が実現しました。
James Gentes 16

11

これが返答をするのに遅すぎないことを望みます。

また、プロジェクトで使用するリアクショングリッドシステムのような、シンプルで堅牢、柔軟性があり、高度にカスタマイズ可能なブートストラップも探していました。

私が知っている最高のものは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>
);

8

私が行う方法は、http://getbootstrap.com/customize/にアクセスして、「グリッドシステム」のみをチェックしてダウンロードすることです。あるbootstrap-theme.cssbootstrap.cssダウンロードしたファイルでは、と私は後者のみを必要としています。

このようにして、Bootstrapのグリッドシステムを使用して、他のすべてをMaterial UIから使用できます。


5

レスポンシブレイアウトにはhttps://react-bootstrap.github.io/を、すべてのコンポーネントにはMaterial-uiを使用します


3
私はそれが少し重いと思います:)グリッド関連のスタイルのみを含める方法はありますか?
kharandziuk

2
したがって、React-Bootstrapを使用するには、関連するcssファイルを含める必要があります。getbootstrap.com/customizeあなただけ〜グリッド・システムを含む、それを縮小さバージョンを使用するためにカスタマイズすることができます
yuchien

5

マテリアルデザインのレスポンシブ動作の標準を実装するUIフレームワークを見つけるのが難しいため、マテリアルデザインのグリッドシステムを実装する2つのパッケージを作成しました。

  1. CSSフレームワーク:material-sensitive-grid
  2. そのフレームワークを実装する一連のReactコンポーネント:react-material-sensitive-grid

これらのパッケージは、Googleで概説されているレスポンシブUIの標準に準拠しています。標準で指定されているすべてのビューポートサイズは、適切なガター、推奨される列数、さらには1600 dpを超えるレイアウトの動作を考慮してサポートされています。デバイスメトリックガイドのすべてのデバイスで推奨されているとおりに動作するはずです。


1

以下は、純粋にMUIグリッドシステムによって作成されます

MUI-グリッドレイアウト

以下のコードで、

// 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↓

MUI-Gridシステムの編集



0

以下は、ブートストラップに似たmaterial-uiを使用したグリッドシステムの例です。

<Grid container>
    <Grid item xs={12} sm={4} md={4} lg={4}>
    </Grid>
    <Grid item xs={12} sm={4} md={4} lg={4}>
    </Grid>
 </Grid>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.