Container в библиотеке MUI — это компонент, предназначенный для центрирования и ограничения ширины содержимого страницы. Он служит базовым блоком для построения адаптивной разметки и управления отступами по краям экрана. Container автоматически применяет горизонтальные отступы и может изменять свою ширину в зависимости от точки останова (breakpoint).
maxWidth Свойство
maxWidth определяет максимальную ширину контейнера и
задаёт, до какого размера содержимое будет расширяться. Возможные
значения:
'xs' — до 444px'sm' — до 600px'md' — до 900px'lg' — до 1200px'xl' — до 1536px Значение false позволяет
контейнеру растягиваться на всю ширину экрана.fixed Булевое свойство
fixed заставляет контейнер иметь фиксированную ширину,
соответствующую выбранному maxWidth, независимо от ширины
экрана.
disableGutters Убирает стандартные
горизонтальные отступы (padding), которые по умолчанию добавляются
контейнером. Полезно, если требуется, чтобы содержимое полностью
прилегало к краям экрана.
import React from 'react';
import Container from '@mui/material/Container';
import Typography from '@mui/material/Typography';
function App() {
return (
<Container maxWidth="md">
<Typography variant="h4" gutterBottom>
Пример заголовка
</Typography>
<Typography>
Контейнер ограничивает ширину содержимого и автоматически применяет горизонтальные отступы.
</Typography>
</Container>
);
}
export default App;
В этом примере контейнер будет растягиваться до ширины
md (900px) и центрироваться на странице.
Container поддерживает адаптивные макеты через точки останова. Например, можно задать максимальную ширину для разных экранов:
<Container maxWidth={{ xs: 'sm', md: 'lg', xl: 'xl' }}>
...
</Container>
В этом случае:
xs) ширина ограничится
sm.md) — lg.xl) — xl.Это позволяет гибко подстраивать интерфейс под любые устройства, не создавая лишнего CSS.
Container можно стилизовать несколькими способами:
sx Позволяет напрямую
передавать стиль в компонент:<Container sx={{ bgcolor: 'grey.100', p: 4, borderRadius: 2 }}>
...
</Container>
Здесь добавляется серый фон, внутренние отступы и скругление углов.
createTheme можно переопределять поведение Container
глобально:import { createTheme, ThemeProvider } from '@mui/material/styles';
const theme = createTheme({
components: {
MuiContainer: {
defaultProps: {
maxWidth: 'lg',
},
styleOverrides: {
root: {
paddingLeft: '24px',
paddingRight: '24px',
},
},
},
},
});
function App() {
return (
<ThemeProvider theme={theme}>
<Container>
...
</Container>
</ThemeProvider>
);
}
fixed
и fluidmaxWidth для каждой точки останова. При изменении размера
окна ширина контейнера не меняется до следующей точки останова.maxWidth={false}
контейнер занимает всю ширину окна, но сохраняет горизонтальные отступы
по умолчанию, если disableGutters не установлен.Container часто используется вместе с Grid для создания
сеток. Он задаёт центральную область, внутри которой
Grid распределяет колонки:
<Container>
<Grid container spacing={2}>
<Grid item xs={6}>
Левый блок
</Grid>
<Grid item xs={6}>
Правый блок
</Grid>
</Grid>
</Container>
Container гарантирует, что сетка не прилипнет к краям экрана и будет выглядеть аккуратно на любых устройствах.
Container с
maxWidth='md' или 'lg'.maxWidth={false} с включением или отключением
disableGutters.sx или тему, чтобы избежать
прямого CSS и сохранить адаптивность.Container — это фундаментальный элемент для построения чистой, адаптивной и удобной разметки. Его гибкие настройки позволяют управлять шириной, отступами и стилем содержимого, обеспечивая единообразие интерфейса на всех устройствах.