Компонент Card в Chakra UI представляет собой контейнер для отображения информации, объединяющий визуальные элементы, текст и действия. Он обеспечивает структурированное оформление и поддержку адаптивного дизайна без необходимости ручного написания CSS.
Базовая структура Card включает три основных блока:
Пример базового Card:
import { Card, CardHeader, CardBody, CardFooter, Button, Text } from "@chakra-ui/react";
function ExampleCard() {
return (
<Card maxW="sm" borderWidth="1px" borderRadius="lg" overflow="hidden">
<CardHeader>
<Text fontSize="xl" fontWeight="bold">Заголовок карточки</Text>
</CardHeader>
<CardBody>
<Text>Описание карточки с информацией о продукте или контенте.</Text>
</CardBody>
<CardFooter>
<Button colorScheme="blue">Действие</Button>
</CardFooter>
</Card>
);
}
Card наследует свойства всех Box-компонентов Chakra UI, что позволяет гибко управлять стилями:
maxW – максимальная ширина.borderRadius – скругление углов.boxShadow – тень, например "md",
"lg".overflow – поведение содержимого при переполнении
("hidden", "scroll").bg – фоновый цвет.Пример с кастомизацией:
<Card
maxW="400px"
bg="gray.50"
boxShadow="xl"
borderRadius="2xl"
p={4}
>
<CardBody>
<Text>Кастомизированная карточка с увеличенной тенью и скруглениями.</Text>
</CardBody>
</Card>
Chakra UI позволяет комбинировать карточки с другими компонентами для создания сложных интерфейсов:
import { Image } from "@chakra-ui/react";
<Card maxW="sm" borderRadius="md" overflow="hidden">
<CardHeader>
<Image src="/example.jpg" alt="Пример изображения" />
</CardHeader>
<CardBody>
<Text>Карточка с изображением в шапке.</Text>
</CardBody>
</Card>
import { Stack } from "@chakra-ui/react";
<Card maxW="sm" borderRadius="md" overflow="hidden">
<CardBody>
<Stack spacing={3}>
<Text fontWeight="bold">Заголовок</Text>
<Text>Подробное описание контента карточки.</Text>
</Stack>
</CardBody>
</Card>
Карточки Chakra UI легко делают адаптивными с помощью пропсов
responsive:
<Card maxW={["100%", "sm", "md"]} p={[2, 4, 6]}>
<CardBody>
<Text>Адаптивная карточка, ширина которой меняется в зависимости от экрана.</Text>
</CardBody>
</Card>
Можно добавлять кнопки, ссылки и ховеры:
<Card
maxW="sm"
borderWidth="1px"
borderRadius="lg"
overflow="hidden"
_hover={{ boxShadow: "lg" }}
>
<CardBody>
<Text>Наведение мыши меняет тень карточки.</Text>
</CardBody>
<CardFooter>
<Button colorScheme="teal" size="sm">Подробнее</Button>
</CardFooter>
</Card>
Chakra UI позволяет управлять Card через extendTheme, задавая глобальные стили:
import { extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
components: {
Card: {
baseStyle: {
borderRadius: "xl",
boxShadow: "md",
bg: "white",
},
sizes: {
sm: { maxW: "sm" },
md: { maxW: "md" },
},
variants: {
outline: { borderWidth: "1px", borderColor: "gray.200" },
solid: { bg: "blue.50" },
},
},
},
});
Карточки часто комбинируются с компонентами SimpleGrid или Grid:
import { SimpleGrid } from "@chakra-ui/react";
<SimpleGrid columns={[1, 2, 3]} spacing={6}>
<Card>Карточка 1</Card>
<Card>Карточка 2</Card>
<Card>Карточка 3</Card>
</SimpleGrid>
Карточки в Chakra UI создают структурированный, визуально аккуратный интерфейс с минимальными усилиями и полностью соответствуют принципам модульного и адаптивного дизайна.