Grid в MUI — это мощный инструмент для построения адаптивных и гибких интерфейсов на основе CSS Flexbox и CSS Grid. Он позволяет управлять расположением компонентов на странице, обеспечивая консистентность дизайна и удобство в масштабировании.
Grid состоит из двух основных элементов: Container и Item. Контейнер задаёт сетку, а элементы (Item) располагаются внутри неё.
import Grid from '@mui/material/Grid';
<Grid container spacing={2}>
<Grid item xs={6}>
Элемент 1
</Grid>
<Grid item xs={6}>
Элемент 2
</Grid>
</Grid>
container — указывает, что Grid является контейнером
сетки.item — указывает, что Grid является элементом
сетки.spacing — задаёт отступы между элементами сетки (в
единицах MUI, обычно кратные 8px).MUI Grid использует 12-колоночную систему. Любой
элемент можно растянуть на нужное количество колонок через свойства
xs, sm, md, lg,
xl.
<Grid container>
<Grid item xs={12} sm={6} md={4}>
Контент
</Grid>
<Grid item xs={12} sm={6} md={8}>
Контент
</Grid>
</Grid>
xs — ширина элемента на экранах от 0px и выше.sm — ширина на экранах от 600px.md — ширина на экранах от 900px.lg — ширина на экранах от 1200px.xl — ширина на экранах от 1536px.Если свойство не указано, элемент автоматически занимает всю доступную ширину.
Grid поддерживает выравнивание элементов через
свойства justifyContent и alignItems.
<Grid container justifyContent="center" alignItems="flex-start">
<Grid item xs={3}>Элемент A</Grid>
<Grid item xs={3}>Элемент B</Grid>
</Grid>
justifyContent управляет горизонтальным распределением:
flex-start, center, flex-end,
space-between, space-around.alignItems управляет вертикальным выравниванием:
flex-start, center, flex-end,
stretch.С помощью свойства wrap контейнер Grid может переносить
элементы на новую строку при нехватке места.
<Grid container wrap="wrap">
<Grid item xs={4}>1</Grid>
<Grid item xs={4}>2</Grid>
<Grid item xs={4}>3</Grid>
<Grid item xs={4}>4</Grid>
</Grid>
wrap="nowrap" — запрещает перенос.wrap="wrap" — разрешает перенос элементов.wrap="wrap-reverse" — перенос в обратном порядке.Grid позволяет создавать вложенные сетки, что обеспечивает высокую гибкость в построении сложных макетов.
<Grid container spacing={2}>
<Grid item xs={12}>
<Grid container spacing={1}>
<Grid item xs={6}>Вложенный 1</Grid>
<Grid item xs={6}>Вложенный 2</Grid>
</Grid>
</Grid>
</Grid>
Вложенные контейнеры наследуют свойства Flexbox, что позволяет легко управлять позиционированием и отступами внутри сложных структур.
Grid поддерживает автоматическое распределение ширины элементов через
auto и условное отображение через display.
<Grid container>
<Grid item xs="auto">Авто ширина</Grid>
<Grid item xs={6}>Фиксированная ширина</Grid>
<Grid item xs={6} display={{ xs: 'none', sm: 'block' }}>
Скрытие на маленьких экранах
</Grid>
</Grid>
xs="auto" — элемент занимает ширину контента.display={{ xs: 'none', sm: 'block' }} — позволяет
скрывать элементы на разных размерах экранов.Grid идеально подходит для:
Использование Grid совместно с MUI компонентами, такими как
Paper, Card или Typography,
позволяет создавать единообразные и легко поддерживаемые интерфейсы.
spacing для поддержания визуальной
гармонии.wrap и размеры
колонок для адаптивности.justifyContent и alignItems
для точного позиционирования.Grid система MUI сочетает гибкость CSS Flexbox с мощью 12-колоночной сетки, делая разработку адаптивных интерфейсов быстрым и управляемым процессом.