Chakra UI предоставляет мощный механизм Style Props, который позволяет управлять визуальным оформлением компонентов через пропсы, а не отдельные CSS-файлы. Это обеспечивает однородность, удобство и масштабируемость интерфейсов в React-приложениях.
Style Props — это свойства компонентов, которые
напрямую соответствуют CSS-свойствам. Например, пропсы
margin, padding, color,
bg управляют отступами, цветом текста и фона.
Примеры базовых пропсов:
<Box bg="blue.500" color="white" p={4} m={2}>
Пример блока
</Box>
bg="blue.500" — задаёт цвет фона из цветовой палитры
Chakra UI.color="white" — цвет текста.p={4} — внутренний отступ (padding), используя систему
спейсов Chakra.m={2} — внешний отступ (margin).Chakra UI использует предопределённую систему спейсов, основанную на множителях числа 4.
p={4} → 16pxm={2} → 8pxТакже можно использовать сокращения:
px — горизонтальный paddingpy — вертикальный paddingmx — горизонтальный marginmy — вертикальный marginПример:
<Box px={6} py={3} bg="green.300">
Горизонтальные и вертикальные отступы
</Box>
Цвета в Chakra UI интегрированы с тематической
системой. Можно использовать палитры: blue.500,
red.200, gray.700 и т.д.
Пример использования текста и фона:
<Text color="purple.600" bg="purple.100" p={3}>
Цвет текста и фона
</Text>
Ключевой принцип: все цвета должны использоваться через тему для обеспечения консистентности интерфейса и возможности централизованной кастомизации.
Style Props позволяют управлять:
fontSize — размер шрифтаfontWeight — толщина шрифтаlineHeight — высота строкиletterSpacing — межбуквенное расстояниеtextAlign — выравнивание текстаПример:
<Text fontSize="lg" fontWeight="bold" lineHeight="tall" textAlign="center">
Пример текста
</Text>
Размеры шрифтов и высоты строки также могут быть определены через тему, что упрощает поддержку единого стиля в приложении.
Chakra UI поддерживает Flexbox и Grid через пропсы:
Flexbox:
<Box display="flex" justifyContent="space-between" alignItems="center">
<Box>Левый элемент</Box>
<Box>Правый элемент</Box>
</Box>
display="flex" — делает контейнер flex-контейнеромjustifyContent — выравнивание по основной осиalignItems — выравнивание по перекрестной осиGrid:
<Grid templateColumns="repeat(3, 1fr)" gap={4}>
<Box bg="red.200">1</Box>
<Box bg="green.200">2</Box>
<Box bg="blue.200">3</Box>
</Grid>
templateColumns задаёт структуру колонокgap — расстояние между элементамиChakra UI позволяет управлять состояниями элементов через специальные пропсы:
_hover — состояние при наведении_active — состояние при нажатии_focus — состояние при фокусеПример кнопки с изменением цвета при наведении:
<Button bg="blue.500" color="white" _hover={{ bg: "blue.600" }}>
Наведи курсор
</Button>
Chakra UI поддерживает адаптивные пропсы через массивы или объекты:
<Box fontSize={["sm", "md", "lg"]} p={{ base: 2, md: 4, lg: 6 }}>
Адаптивный блок
</Box>
[sm, md, lg] — для разных точек останова
(base, sm, md, lg,
xl){ base: 2, md: 4 } — задаёт конкретные значения
для каждой точки остановаВсе Style Props интегрированы с темой Chakra UI, что позволяет:
Пример расширения темы:
const theme = extendTheme({
colors: {
brand: {
100: "#f7c948",
500: "#d69e2e",
},
},
fonts: {
heading: "Roboto, sans-serif",
body: "Open Sans, sans-serif",
},
});
Использование новых цветов:
<Box bg="brand.500" color="white" p={4}>
Брендовый блок
</Box>
Box,
Flex, Grid)Такой подход делает интерфейс чистым, масштабируемым и легко поддерживаемым без прямого написания CSS.