Box
Компонент построен на базе системы отступов VKUI и предоставляет гибкий способ создания раскладок в приложениях VKUI, позволяя задавать отступы, размеры, позиционирование и flex-свойства, делая процесс верстки более декларативным и предсказуемым.
Когда использовать
Компонент Box рекомендуется использовать в следующих ситуациях:
- Создание контейнеров с отступами: когда нужно добавить внутренние отступы к любому элементу интерфейса;
- Управление размерами: для явного задания ширины, высоты или их ограничений;
- Абсолютное и относительное позиционирование: при создании наложений, выпадающих меню или сложных макетов;
- Flex-элементы: как потомок flex-контейнера.
Свойства раскладки
Компонент Box поддерживает обширный набор свойств, объединенных в логические категории:
Отступы
Свойства отступов (свойства с префиксом padding*) позволяют управлять пространством вокруг содержимого. Они принимают:
- токены дизайн-системы VKUI (
'2xs', 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl', '4xl'); - стандартные CSS-значения (
'inherit','initial','unset'); - числовые значения (будут преобразованы в пиксели);
- любое валидное строковое значение (
"2rem", "10%", CSS-переменные).
Размеры
Свойства размеров (свойства с постфиксом *Size) позволяют управлять шириной и высотой компонента, включая минимальные и максимальные ограничения.
Они принимают:
- стандартные CSS-значения (
'auto','max-content','min-content','fit-content','inherit','initial','unset'); - числовые значения в пикселях;
- любое валидное строковое значение (
"200px", "50%", CSS-переменные).
Позиционирование
Свойства позиционирования позволяют определять схему позиционирования и смещения для компонента Box, обеспечивая статическое, относительное, абсолютное или фиксированное позиционирование с направленными смещениями.
Свойство position принимает значения 'static', 'relative', 'absolute', 'fixed'.
Свойства с префиксом inset* принимают:
- токены дизайн-системы VKUI (
'2xs', 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl', '4xl'); - стандартные CSS-значения (
'auto','inherit','initial','unset'); - числовые значения (будут преобразованы в пиксели);
- любое валидное строковое значение (
"2rem", "10%", CSS-переменные).
Flex-свойства
Flex-свойства (flexGrow, flexShrink и flexBasis) позволяют управлять поведением компонента внутри flex-контейнера.
Данные свойства принимают стандартные CSS-значения ('inherit', 'initial', 'unset').
Свойства flexGrow и flexShrink также принимают числовые значения.
flexBasis дополнительно принимает:
'auto','max-content','min-content','fit-content','content';- числовые значения (будут преобразованы в пиксели);
- любое валидное строковое значение (
"2rem", "10%", CSS-переменные).
Переполнение
Свойства переполнения (с префиксом overflow*) позволяют управлять отображением содержимого, которое выходит за границы компонента
Они принимают стандартные CSS-значения переполнения, такие как 'visible', 'hidden', 'clip', 'scroll', 'auto', 'inherit', 'initial', 'unset'.
<Box
style={{
border: '1px solid var(--vkui--color_separator_primary)',
padding: '16px',
margin: '16px 0',
borderRadius: '8px',
backgroundColor: 'var(--vkui--color_background_secondary)',
}}
>
<strong>📏 Единицы измерения:</strong> Все свойства принимают значения дизайн-системы VKUI
(`'2xs'`, `'xs'`, `'s'`, `'m'`, `'l'`, `'xl'`, `'2xl'`, `'3xl'`, `'4xl'`), CSS-значения (`'auto'`,
`'inherit'`, `'initial'`, `'unset'`) или числовые значения в пикселях.
</Box>Сравнение с другими компонентами
Box vs Flex
- Box — универсальный контейнер с настраиваемыми отступами, подходит для создания изолированных блоков,
может быть потомком компонента
Flex; Flex— специализированный контейнер для создания flex-блоков, поддерживает все flex-свойства.
Box vs div
- Box — предоставляет декларативный API на базе дизайн-токенов VKUI;
- div — требует ручного управления стилями и классами (через свойства
style/class).
<Box padding="m" inlineSize={300} position="relative">
Контент
</Box>
<div style={{ padding: 'var(--vkui--spacing_m)', width: 300, position: 'relative' }}>Контент</div>Box vs Spacing
- Box — для создания контейнеров с любыми layout-свойствами;
Spacing— исключительно для создания отступов между элементами.
Свойства и методы
| Свойство | Описание |
|---|---|
blockSize | SizePropРазмер элемента по блочной оси (при горизонтальном направлении письма - высота элемента). По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
flexBasis | FlexBasisPropОпределяет начальный размер flex-элемента. По умолчанию: - |
flexGrow | FlexGrowPropОпределяет, насколько элемент будет расти относительно остальных flex-элементов. По умолчанию: - |
flexShrink | FlexShrinkPropОпределяет, насколько элемент будет сжиматься относительно остальных flex-элементов. По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
inlineSize | SizePropРазмер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента). По умолчанию: - |
inset | InsetPropСмещение элемента по По умолчанию: - |
insetBlock | InsetPropБоковое смещение по блочной оси (при горизонтальном направлении письма - свойства По умолчанию: - |
insetBlockEnd | InsetPropСмещение конечного отступа по блочной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
insetBlockStart | InsetPropСмещение начального отступа по блочной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
insetInline | InsetPropБоковое смещение по строчной оси (при горизонтальном направлении письма - свойства По умолчанию: - |
insetInlineEnd | InsetPropСмещение конечного отступа по строчной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
insetInlineStart | InsetPropСмещение начального отступа по строчной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
maxBlockSize | SizePropМаксимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента). По умолчанию: - |
maxInlineSize | CSSGlobalValue | ((string | number) & Nothing) | "max-content" | "min-content" | "fit-content"Максимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента). По умолчанию: - |
minBlockSize | SizePropМинимальный размер элемента по блочной оси (при горизонтальном направлении письма - высота элемента). По умолчанию: - |
minInlineSize | CSSGlobalValue | ((string | number) & Nothing) | "max-content" | "min-content" | "fit-content"Минимальный размер элемента по строчной оси (при горизонтальном направлении письма - ширина элемента). По умолчанию: - |
overflow | OverflowValueУправление переполнением содержимого. По умолчанию: - |
overflowBlock | OverflowValueУправление переполнением содержимого по блочной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
overflowInline | OverflowValueУправление переполнением содержимого по строчной оси (при горизонтальном направлении письма - свойство По умолчанию: - |
padding | PaddingPropВнутренние отступы со всех сторон. По умолчанию: - |
paddingBlock | PaddingPropВнутренние отступы по блочной оси. По умолчанию: - |
paddingBlockEnd | PaddingPropВнутренний конечный отступ по блочной оси. По умолчанию: - |
paddingBlockStart | PaddingPropВнутренний начальный отступ по блочной оси. По умолчанию: - |
paddingInline | PaddingPropВнутренние отступы по строчной оси. По умолчанию: - |
paddingInlineEnd | PaddingPropВнутренний конечный отступ по строчной оси. По умолчанию: - |
paddingInlineStart | PaddingPropВнутренний начальный отступ по строчной оси. По умолчанию: - |
position | PositionValueПозиционирование элемента. По умолчанию: - |