Container — это компонент библиотеки MUI (Material-UI), который служит для создания ограниченной по ширине области на странице и управления расположением контента внутри неё. Он обеспечивает адаптивную структуру макета, автоматически применяя отступы и выравнивание по центру. Основная цель Container — упрощение организации макета и соблюдение принципов Material Design.
maxWidth Определяет максимальную
ширину контейнера. Принимает значения:
"xs" | "sm" | "md" | "lg" | "xl" | false. Пример:
import Container from '@mui/material/Container';
<Container maxWidth="md">
<p>Контент ограничен по ширине до md</p>
</Container>
Если указать false, ширина контейнера становится
100% от родительского элемента.
disableGutters Логическое значение,
отключающее внутренние отступы по горизонтали (padding). Пример:
<Container disableGutters>
<p>Контент без отступов слева и справа</p>
</Container>fixed Принудительно фиксирует
ширину контейнера, соответствующую заданной точке останова
(maxWidth), независимо от размера экрана.
<Container fixed maxWidth="lg">
<p>Фиксированная ширина контейнера</p>
</Container>sx Позволяет применять стиль через
систему sx от MUI. Используется для кастомизации отступов, выравнивания
и других CSS-свойств.
<Container sx={{ backgroundColor: '#f5f5f5', textAlign: 'center' }}>
<p>Центрированный контент с серым фоном</p>
</Container>Центрирование внутри Container можно выполнить несколькими способами:
Используется CSS-свойство textAlign: 'center' через
sx или отдельный класс:
<Container sx={{ textAlign: 'center' }}>
<button>Кнопка по центру</button>
</Container>
Для вертикального центрирования контента применяется
display: 'flex' и alignItems: 'center' вместе
с minHeight:
<Container
sx={{
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
minHeight: '100vh'
}}
>
<h1>Вертикально и горизонтально центрированный заголовок</h1>
</Container>
display: 'flex' превращает контейнер в
flex-контейнер.justifyContent: 'center' центрирует
элементы по вертикали (для flexDirection: 'column').alignItems: 'center' центрирует
элементы по горизонтали.minHeight: '100vh' растягивает
контейнер на всю высоту видимой области.MUI автоматически обеспечивает адаптивность контейнера. Значение
maxWidth меняется в зависимости от размера экрана:
| Значение maxWidth | Ширина контейнера (приблизительно) |
|---|---|
| xs | 444px |
| sm | 600px |
| md | 960px |
| lg | 1280px |
| xl | 1920px |
При этом контент остаётся центрированным на экранах любого размера.
Если нужно изменить горизонтальные отступы на разных точках останова,
используется система breakpoints в sx:
<Container
sx={{
px: { xs: 2, sm: 3, md: 4 } // padding слева и справа адаптивно
}}
>
<p>Контент с адаптивными отступами</p>
</Container>
Container часто используют вместе с Grid и Box для сложных макетов:
import Box from '@mui/material/Box';
import Grid from '@mui/material/Grid';
<Container maxWidth="lg">
<Grid container spacing={2} justifyContent="center">
<Grid item xs={12} sm={6}>
<Box sx={{ backgroundColor: '#cfe8fc', p: 2, textAlign: 'center' }}>
Левый блок
</Box>
</Grid>
<Grid item xs={12} sm={6}>
<Box sx={{ backgroundColor: '#ffcfe8', p: 2, textAlign: 'center' }}>
Правый блок
</Box>
</Grid>
</Grid>
</Container>
justifyContent="center" выравнивает грид-строки по
горизонтали.Эти возможности делают Container универсальным инструментом для центрирования и структурирования контента в проектах на MUI, сохраняя адаптивность и соответствие принципам Material Design.