Material UI ve Grid sistemi


118

Material-UI ile biraz oynuyorum . Bir ızgara düzeni oluşturmak için herhangi bir seçenek var mı ( Bootstrap'teki gibi )?

Değilse, bu işlevi eklemenin yolu nedir?

Bir GridList bileşeni var ama sanırım farklı bir amacı var.


Duyarlı ızgaralar oluşturmak için herhangi bir bileşeni olduğunu düşünmeyin.
Lucky Chingi

Yanıtlar:


126

Material UI, Grid bileşeni aracılığıyla kendi Flexbox düzenini uygulamıştır .

Görünüşe göre başlangıçta kendilerini tamamen bir 'bileşenler' kitaplığı olarak tutmak istiyorlardı. Ancak çekirdek geliştiricilerden biri, kendi geliştiricilere sahip olmamanın çok önemli olduğuna karar verdi . Şimdi çekirdek koda birleştirildi ve v1.0.0 ile piyasaya sürüldü .

Şu yolla kurabilirsiniz:

npm install @material-ui/core

Artık kod örnekleriyle resmi belgelerde bulunmaktadır .


Az önce ekleyeceğim cevabı gönderdiğini görüyorum! lol. sadece mevcut ana cevap hakkındaki yorumunuza yanıt verdim.
Cleanshooter

Şu anda Material UI'nin alfa dalı kuruldu ve kullanılıyor. Layout sisteminin iyi çalıştığını doğrulayabilir.
user2875289

3
Izgara sistemi iyi çalışıyor ancak, gibi henüz uygulanmamış bazı bileşenler var Select Field. Bu tür alanları nasıl kullanacağım konusunda takılıp kaldım. Bana bu konuda yardım edebilir misin?
Suresh Mainali

1
Ben de aynı sorunlarla karşılaştığım için @SureshMainali'ye katılıyorum. Bileşenlerin çoğunda eksik aksesuarlar var ve hatta özel tema uygulamasıyla ilgili
Sai Ram

@SaiRam Çoğunu söylemeyeceğim, ama gerçekten Selecteksik, şimdilik radyo düğmeleriyle değiştirdim , ancak seçimin bagajdan taşınması çok uzun sürmeyeceğinden eminim.
icc97

35

Materyal tasarım özelliklerinin açıklamasından :

Izgara Listeleri, standart liste görünümlerine bir alternatiftir. Kılavuz listeleri, düzenler ve diğer görsel sunumlar için kullanılan ızgaralardan farklıdır.

Çok hafif bir Grid bileşen kitaplığı arıyorsanız, React'te uygulaması olan React-Flexbox-Grid kullanıyorum flexboxgrid.css.

Bunun üzerine, FlexBox Şebeke-tepki hem de güzel oynadığı malzeme ui ve -araç kutusu tepki (alternatif malzeme tasarımı uygulaması).


32
React-Flexbox-Grid, bu gönderi sırasında zayıf bir şekilde uygulanmıştır ve düzgün çalışması için birçok harici bağımlılık gerektirir. Artı, @ Roylee bunun geliştiricisi ... bu yüzden görüşü yine de biraz önyargılı;) ...
Cleanshooter

1
Ayrıca react-flexbox-grid, Malzeme Tasarımında önerilen aynı duyarlı kesme noktalarını kullanmayan flexboxgrid'e bağlıdır. Bakınız: material.io/guidelines/layout/…
Ken Gregory

@Cleanshooter bu senin rakip versiyonun olur mu? Belki de biraz önyargılısınız :)
icc97

@ icc97 evet ve hayır. Gerçekten "rekabet" niyetinde değildim, bu daha çok geliştirmekte olduğum uygulama için bir ara boşluktu. Bunu her ikisinden de hayal kırıklığına uğradıktan sonra yaptım ... artık önemli değil çünkü CallEmAll'daki adamlar Material-UI'nin en son sürümüne bir grid sistemi dahil ettiler. Henüz şahsen denemedim. github.com/callemall/material-ui/pull/5808
Cleanshooter

1
@Cleanshooter seninki oldukça iyi görünüyordu. Yeni Material-UI ızgarasını test ediyorum ve şu ana kadar iyi çalışıyor.
icc97

20

Buna bir cevap bulmak için etrafıma baktım ve bulduğum en iyi yol, farklı bileşenlerde Flex ve satır içi stil kullanmaktı.

Örneğin, iki kağıt bileşeninin tam ekranı 2 dikey bileşene (1: 4 oranında) bölmesini sağlamak için aşağıdaki kod iyi çalışıyor.

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>
    )
  }
}

Şimdi, biraz daha hesaplamayla bileşenlerinizi bir sayfada kolayca bölebilirsiniz.

Esnek üzerine daha fazla okuma


2
Kabul ediyorum, flex css özelliklerini kullanmak ihtiyacım olan basit biçimlendirmeyi sağladı.
James Gentes

11

Umarım yanıt vermek için çok geç değildir.

Ayrıca projelerimde kullanmak için react grid sistemi gibi basit, sağlam, esnek ve son derece özelleştirilebilir bir önyükleme arıyordum.

Bildiğim en iyi şey react-pure-grid https://www.npmjs.com/package/react-pure-grid

react-pure-grid size şebeke sisteminizin her yönünü özelleştirme gücü verirken, aynı zamanda muhtemelen herhangi bir projeye uyan varsayılanları da içerir

kullanım

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

Yaptığım yöntem http://getbootstrap.com/customize/ adresine gitmek ve indirmek için sadece "grid sistemi" ni kontrol etmektir. İndirilen dosyalar var bootstrap-theme.cssve var ve bootstrap.csssadece ikincisine ihtiyacım var.

Bu şekilde, Bootstrap'in grid sistemini, Material UI'deki diğer her şeyle birlikte kullanabilirim.


5

Sadece kullanmak https://react-bootstrap.github.io/ tüm bileşen için Duyarlı Düzen ve Materyal-ui için


3
Sanırım biraz ağır :) Sadece ızgarayla ilgili stilleri dahil etmenin bir yolu var mı?
kharandziuk

2
Dolayısıyla, React-Bootstrap'ı kullanmak için yine de ilgili css dosyasını eklemeniz gerekir. Gönderen getbootstrap.com/customize sadece Izgara sistemini içerecek şekilde özelleştirmek ve bunun bir minified versiyonunu kullanılan olabilir ~
yuchien

5

Duyarlı davranış için Materyal Tasarım standartlarını uygulayacak bir UI çerçevesi bulmakta güçlük çektim, bu yüzden Materyal Tasarım için bir grid sistemi uygulayan iki paket oluşturdum:

  1. Bir CSS çerçevesi: malzeme duyarlı ızgara
  2. Bu çerçeveyi uygulayan bir dizi React bileşeni: react-material-responsive-grid .

Bu paketler , Google tarafından özetlenen duyarlı kullanıcı arayüzü standartlarına uygundur . Standartlarında belirtilen tüm görüntü alanı boyutları, uygun oluklar, önerilen sütun sayısı ve hatta 1600 dp'yi aşan bir düzenin davranışı dikkate alınarak desteklenir. Cihaz Ölçümleri kılavuzundaki her cihaz için önerildiği gibi davranmalıdır .


1

Aşağıda tamamen MUI Grid sistemi ile yapılmıştır ,

MUI - Izgara Düzeni

Aşağıdaki kod ile,

// 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 sistemini düzenle



0

İşte bootstrap'e benzeyen material-ui'li grid sistemi örneği:

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.