Box — это базовый компонент библиотеки MUI, который служит универсальным контейнером для построения пользовательского интерфейса. Его ключевая особенность заключается в гибкости: Box объединяет возможности CSS и системные свойства MUI, позволяя управлять стилями напрямую через пропсы.
sx Проп
sx предоставляет доступ к мощной системе стилизации MUI. Он
позволяет задавать CSS-свойства, используя объектный синтаксис, а также
применять темы и адаптивные стили. Пример:<Box sx={{ width: 300, height: 200, bgcolor: 'primary.main', p: 2 }}>
Контент
</Box>
Здесь:
width и height задают размеры
контейнера;bgcolor использует цвет из темы;p (padding) задаёт внутренние отступы.sx поддерживает вложенные селекторы, псевдоклассы и
медиазапросы, что делает его мощным инструментом для адаптивной
верстки.
Box предоставляет удобные сокращения для margin и padding через пропсы:
m — marginmt, mr, mb, ml —
отступы сверху, справа, снизу, слеваp — paddingpt, pr, pb, pl —
внутренние отступы по направлениямПример:
<Box p={3} mt={2} bgcolor="secondary.light">
Содержимое с отступами
</Box>
Эти значения могут быть числовыми (используется масштаб темы) или
строковыми ('10px').
Box позволяет строить гибкие контейнеры без
необходимости импортировать отдельные компоненты Grid или
Stack.
<Box display="flex" justifyContent="space-between" alignItems="center">
<Box>Элемент 1</Box>
<Box>Элемент 2</Box>
</Box>
display="flex" превращает Box в flex-контейнер;justifyContent управляет выравниванием по основной
оси;alignItems — по поперечной оси.Также возможна работа с grid:
<Box display="grid" gridTemplateColumns="repeat(3, 1fr)" gap={2}>
<Box>1</Box>
<Box>2</Box>
<Box>3</Box>
</Box>
gridTemplateColumns задаёт структуру колонок;gap управляет расстоянием между элементами.Box тесно интегрирован с темой MUI, что позволяет применять значения цветов, типографики и брейкпоинтов напрямую:
<Box sx={{ color: 'text.secondary', bgcolor: 'background.paper', p: 4 }}>
Текст с цветовыми настройками темы
</Box>
text.secondary и background.paper берутся
из текущей темы;Через sx можно добавлять hover,
focus и другие состояния:
<Box
sx={{
bgcolor: 'primary.main',
'&:hover': {
bgcolor: 'primary.dark'
}
}}
>
Наведи курсор
</Box>
Box часто применяется как обёртка для других компонентов, обеспечивая единый стиль и управление layout:
<Box sx={{ p: 2, border: 1, borderColor: 'grey.400' }}>
<Typography variant="h6">Заголовок</Typography>
<Button variant="contained">Кнопка</Button>
</Box>
Box поддерживает медиазапросы через sx,
что позволяет менять стили в зависимости от размера экрана:
<Box
sx={{
width: { xs: '100%', sm: '50%', md: '25%' },
bgcolor: { xs: 'primary.light', md: 'primary.main' }
}}
>
Адаптивный контейнер
</Box>
xs, sm, md — брейкпоинты
темы;sx, поддержку темы и
адаптивность.Box в MUI — это не просто контейнер, а мощный инструмент для построения интерфейсов, объединяющий управление layout, стилизацию и адаптивность в одном компоненте.