Як відцентрувати компонент у Material-UI та зробити його чуйним?


77

Я не зовсім розумію систему сіток React Material-UI. Якщо я хочу використовувати компонент форми для входу, який найпростіший спосіб відцентрувати його на екрані на всіх пристроях (мобільних та настільних)?


Щоб бути впевненим, ви говорите про цю бібліотеку - material-ui.com, правда?
Свопніл

так, я говорю про ту саму бібліотеку
zorro

Відповіді:


148

Оскільки ви збираєтеся використовувати це на сторінці входу. Ось код, який я використав на сторінці входу за допомогою Material-UI

<Grid
  container
  spacing={0}
  direction="column"
  alignItems="center"
  justify="center"
  style={{ minHeight: '100vh' }}
>

  <Grid item xs={3}>
    <LoginForm />
  </Grid>   

</Grid> 

це зробить цю форму для входу в центрі екрана.

Але все-таки IE не підтримує сітку Material-UI Grid, і ви побачите дещо зміщений вміст в IE.

Сподіваюся, це допоможе вам.


2
Невелика корекція, для випадку використання Op, напрямок гнучкості повинен бути рядком >>> direction = "row"
Пітер Мойсей

Зазвичай alignItems = center і justify = center розміщує компонент в центрі сторінки, але це не так. Додавання стилю = {{minHeight: '100vh'}} виконує завдання, але додає смугу прокрутки на сторінці. Як це буде виправлено?
Тонкий


12

Версія @ Nadun не працювала для мене, розмір не працював добре. Видалено direction="column"або змінено на row, допомагає створювати вертикальні форми входу з адаптивним розміром.

<Grid
  container
  spacing={0}
  alignItems="center"
  justify="center"
  style={{ minHeight: "100vh" }}
>
  <Grid item xs={6}></Grid>
</Grid>;

11

Ось ще один варіант без сітки:

<div
    style={{
        position: 'absolute', 
        left: '50%', 
        top: '50%',
        transform: 'translate(-50%, -50%)'
    }}
>
    <YourComponent/>
</div>

Це мені дуже добре вдалося для центрування компонента Material-UI <Fab>. Як доповнення, у методі перекладу першим параметром є горизонтальний переклад, а другим - вертикальний переклад.
Майкл Джей,

Це рішення має проблему, воно зменшить розмір компонента на 50% у ширину та висоту
Nicolás Apolonia

5

Це можна зробити за допомогою компонента Box:

import Box from "@material-ui/core/Box";

...

<Box
  display="flex"
  justifyContent="center"
  alignItems="center"
  minHeight="100vh"
>
  <YourComponent/>
</Box>

3

Все, що вам потрібно зробити, - це обернути вміст усередині тегу Grid Container, вказати інтервал, а потім обернути фактичний вміст всередині тегу Grid Item.

 <Grid container spacing={24}>
    <Grid item xs={8}>
      <leftHeaderContent/>
    </Grid>

    <Grid item xs={3}>
      <rightHeaderContent/>
    </Grid>
  </Grid>

Крім того, я багато боровся з сіткою матеріалів, я пропоную вам перевірити flexbox, який вбудований в CSS автоматично, і вам не потрібні ніякі пакети доповнень для використання. Це дуже легко навчитися.

https://css-tricks.com/snippets/css/a-guide-to-flexbox/


Дякую, отже, я використовую 3 елементи Grid і розміщую компонент посередині, щоб відцентрувати його?
zorro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.