В библиотеке MUI для управления отступами и позиционированием
компонентов используется система spacing, которая
интегрирована с темой приложения. Это позволяет создавать интерфейсы с
адаптивной версткой, где отступы автоматически
подстраиваются под размер экрана или используемую тему.
MUI предоставляет функцию theme.spacing(), которая
возвращает значение отступа в пикселях. По умолчанию
spacing(1) соответствует 8 пикселям.
const useStyles = makeStyles((theme) => ({
container: {
padding: theme.spacing(2), // 16px
marginBottom: theme.spacing(3), // 24px
},
}));
Ключевые моменты:
spacing(), умножается на
базовую единицу (по умолчанию 8px).theme.spacing(0.5) = 4px.sx пропомКомпоненты MUI поддерживают проп sx, который позволяет
задавать стили с учётом breakpoints (точек
останова).
<Box
sx={{
p: { xs: 1, sm: 2, md: 3 }, // padding: 8px на xs, 16px на sm, 24px на md
mb: { xs: 2, sm: 3 } // margin-bottom: 16px на xs, 24px на sm
}}
>
Контент
</Box>
Разбор:
xs, sm, md, lg,
xl — стандартные точки останова в MUI.'10px',
'1rem').MUI предлагает компоненты Grid и Stack,
которые облегчают управление отступами между элементами:
<Stack spacing={{ xs: 1, sm: 2, md: 3 }}>
<Button>Кнопка 1</Button>
<Button>Кнопка 2</Button>
<Button>Кнопка 3</Button>
</Stack>
spacing автоматически добавляет вертикальные или
горизонтальные промежутки между дочерними элементами.Для Grid используется система spacing в
колонках:
<Grid container spacing={{ xs: 1, sm: 2, md: 4 }}>
<Grid item xs={6}>Элемент 1</Grid>
<Grid item xs={6}>Элемент 2</Grid>
</Grid>
spacing задаёт внешние отступы между
колонками, автоматически подстраиваясь под размеры экрана.spacing={2} означает отступ 16px (2 ×
8px).В теме приложения можно изменить базовую единицу spacing:
const theme = createTheme({
spacing: 10, // новая базовая единица
});
theme.spacing(2) будет равен 20px вместо
стандартных 16px.Можно комбинировать spacing с функциями и переменными
для условной адаптивности:
<Box
sx={{
padding: (theme) => theme.spacing(window.innerWidth > 600 ? 4 : 2)
}}
>
Контент
</Box>
theme.spacing.Stack и Grid позволяют
минимизировать явное задание margin/padding.Адаптивные отступы в MUI — это сочетание темы, системы spacing и breakpoints, что делает разработку интерфейсов быстрой, гибкой и согласованной по стилю.