Card 卡片组件 #
基本用法 #
jsx
import {
Card,
CardHeader,
CardBody,
CardFooter,
Heading,
Text,
Button,
} from '@chakra-ui/react'
function Example() {
return (
<Card>
<CardHeader>
<Heading size="md">卡片标题</Heading>
</CardHeader>
<CardBody>
<Text>卡片内容描述文字</Text>
</CardBody>
<CardFooter>
<Button colorScheme="blue">查看详情</Button>
</CardFooter>
</Card>
)
}
卡片变体 #
jsx
<Card variant="elevated">悬浮卡片</Card>
<Card variant="outline">轮廓卡片</Card>
<Card variant="filled">填充卡片</Card>
卡片尺寸 #
jsx
<Card size="sm">小卡片</Card>
<Card size="md">中等卡片</Card>
<Card size="lg">大卡片</Card>
卡片方向 #
jsx
<Card direction={{ base: 'column', sm: 'row' }}>
<Image src="image.jpg" alt="图片" />
<CardBody>
<Text>卡片内容</Text>
</CardBody>
</Card>
实用示例 #
产品卡片 #
jsx
function ProductCard({ product }) {
return (
<Card maxW="sm">
<CardBody>
<Image
src={product.image}
alt={product.name}
borderRadius="lg"
/>
<Heading size="md" mt={4}>{product.name}</Heading>
<Text color="gray.500" mt={2}>{product.description}</Text>
<Text color="blue.600" fontSize="2xl" fontWeight="bold" mt={4}>
¥{product.price}
</Text>
</CardBody>
<Divider />
<CardFooter>
<ButtonGroup spacing={2}>
<Button variant="solid" colorScheme="blue">
加入购物车
</Button>
<Button variant="ghost" colorScheme="blue">
收藏
</Button>
</ButtonGroup>
</CardFooter>
</Card>
)
}
用户卡片 #
jsx
function UserCard({ user }) {
return (
<Card>
<CardBody>
<HStack spacing={4}>
<Avatar src={user.avatar} size="lg" />
<Box>
<Heading size="sm">{user.name}</Heading>
<Text color="gray.500">{user.role}</Text>
<HStack mt={2}>
<Badge colorScheme="green">{user.status}</Badge>
<Badge colorScheme="blue">{user.department}</Badge>
</HStack>
</Box>
</HStack>
</CardBody>
</Card>
)
}
统计卡片 #
jsx
function StatCard({ title, value, change, icon }) {
return (
<Card>
<CardBody>
<HStack justify="space-between">
<Box>
<Text color="gray.500" fontSize="sm">{title}</Text>
<Text fontSize="2xl" fontWeight="bold">{value}</Text>
<HStack mt={2}>
<Icon as={change > 0 ? ArrowUpIcon : ArrowDownIcon}
color={change > 0 ? 'green.500' : 'red.500'} />
<Text color={change > 0 ? 'green.500' : 'red.500'} fontSize="sm">
{Math.abs(change)}%
</Text>
</HStack>
</Box>
<Icon as={icon} boxSize={10} color="blue.500" />
</HStack>
</CardBody>
</Card>
)
}
Card 属性速查表 #
| 属性 | 说明 | 值 |
|---|---|---|
| variant | 变体 | elevated, outline, filled |
| size | 尺寸 | sm, md, lg |
| direction | 方向 | row, column |
下一步 #
现在你已经掌握了 Card 组件,接下来学习 Avatar 头像,了解如何展示用户头像!
最后更新:2026-03-28