Chakra UI предоставляет удобный синтаксис для сокращенной записи CSS-свойств через пропсы компонентов, что позволяет писать более компактный и читаемый код без потери функциональности. В основе лежит концепция shorthand props, где одно свойство может управлять несколькими CSS-свойствами одновременно.
Система отступов в Chakra UI реализована через следующие сокращенные пропсы:
m — общий маргин (margin)mt, mr, mb, ml —
маргин сверху, справа, снизу, слеваmx — горизонтальные отступы (ml и
mr)my — вертикальные отступы (mt и
mb)p — общий паддинг (padding)pt, pr, pb, pl —
паддинги по сторонамpx — горизонтальные паддинги (pl и
pr)py — вертикальные паддинги (pt и
pb)Пример:
<Box m={4} p={2} mx={6} py={3}>
Контент с отступами
</Box>
Здесь mx={6} задаёт левый и правый маргин одновременно,
а py={3} — верхний и нижний паддинг.
w или width — ширинаh или height — высотаminW, maxW — минимальная и максимальная
ширинаminH, maxH — минимальная и максимальная
высотаboxSize — одновременно ширина и высота элементаПример использования boxSize:
<Image boxSize="100px" src="avatar.png" alt="Аватар" />
boxSize автоматически задаёт и width, и
height для элемента, упрощая запись.
Сокращения позволяют быстро управлять цветами текста, фона и границ:
color — цвет текстаbg — цвет фона (backgroundColor)bgGradient — градиент фонаborderColor — цвет границыborderWidth — ширина границыborderRadius или rounded — скругление
угловroundedTop, roundedBottom,
roundedLeft, roundedRight — частичное
скруглениеПример:
<Box bg="teal.500" color="white" rounded="md" p={4}>
Кнопка с фоном и скруглением
</Box>
Здесь rounded="md" задаёт скругление углов по всей
коробке. Chakra поддерживает ключевые размеры sm,
md, lg, xl для быстрого
выбора.
Для работы с Flexbox и Grid предусмотрены сокращения, позволяющие управлять выравниванием и расположением элементов:
d или display — тип отображения
(flex, grid, block,
inline-block)flexDir — направление flex (row,
column)justify или justifyContent — выравнивание
по основной осиalign или alignItems — выравнивание по
перекрестной осиgap — расстояние между элементамиrowGap, columnGap — отдельные интервалы
для строк и столбцовПример Flex:
<Flex d="flex" flexDir="column" align="center" gap={4}>
<Box bg="blue.200" w="50px" h="50px" />
<Box bg="red.200" w="50px" h="50px" />
</Flex>
Сокращения d, flexDir и gap
позволяют создавать аккуратные структуры без лишнего CSS.
Chakra UI предоставляет сокращенные пропсы для текста:
fontSize — размер шрифтаfontWeight — толщина шрифтаlineHeight — высота строкиletterSpacing — межбуквенный интервалtextAlign — выравнивание текстаnoOfLines — ограничение количества строк с
автоматическим усечениемПример:
<Text fontSize="lg" fontWeight="bold" lineHeight="short" textAlign="center" noOfLines={2}>
Это пример текста с сокращёнными пропсами для типографии.
</Text>
noOfLines={2} автоматически добавляет многоточие при
превышении двух строк.
Сокращения для визуальных эффектов и взаимодействий:
shadow — тень элемента (boxShadow)opacity — прозрачностьtransition — CSS-переходыtransform — трансформации (rotate,
scale, translate)cursor — стиль курсораПример кнопки с эффектом при наведении:
<Button bg="purple.500" color="white" shadow="md" _hover={{ bg: "purple.600", shadow: "lg" }}>
Наведи на меня
</Button>
Использование _hover вместе с сокращенными пропсами
делает код компактным и понятным.
theme, например
bg="gray.200".sx.Сокращенные записи свойств в Chakra UI позволяют создавать чистый, лаконичный и легко поддерживаемый код, минимизируя необходимость писать CSS вручную и обеспечивая гибкость через встроенную систему пропсов.