Skip to content

Card 卡片

新粗野主义风格的卡片容器,支持 6 种变体和可组合的子组件,用于结构化内容展示。

预览

Preview

默认

卡片标题

卡片描述信息。

这是卡片内容区域,可以放置文本、图片或其他组件。

变体

默认

标准阴影

提升

更大阴影

扁平

无阴影

交互式

悬停查看效果

主要

主要颜色边框和阴影

次要

次要颜色边框和阴影

内边距

内边距: 无

内边距: 小

内边距: 默认

内边距: 大

安装

pnpm dlx brutx-vue@latest add card

用法

vue
<script setup>
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, Button } from 'brutx-ui-vue'
</script>

<template>
    <Card variant="default">
        <CardHeader>
            <CardTitle>Payment Method</CardTitle>
            <CardDescription>Add a new payment method to your account.</CardDescription>
        </CardHeader>
        <CardContent>
            <p>Card content goes here.</p>
        </CardContent>
        <CardFooter>
            <Button variant="primary">Save</Button>
        </CardFooter>
    </Card>
</template>

变体

变体说明
default标准阴影
elevated大阴影,用于强调
flat无阴影
interactive阴影加悬停上浮效果和手型光标
primaryPrimary 色阴影和边框
secondarySecondary 色阴影和边框

内边距

内边距
nonep-0
smp-3
defaultp-5
lgp-8

模板组合

新卡片模板建议直接组合 Card 子组件。

文章卡片

vue
<Card variant="interactive" padding="none">
    <CardHeader>
        <Badge variant="accent" size="sm">Vue 3</Badge>
        <CardTitle>Getting Started with BrutxUI</CardTitle>
        <CardDescription>Build bold interfaces with composable primitives.</CardDescription>
    </CardHeader>
    <CardFooter>
        <Button variant="link">阅读更多</Button>
    </CardFooter>
</Card>

文件卡片

vue
<Card>
    <CardHeader>
        <CardTitle>report-2026.pdf</CardTitle>
        <CardDescription>PDF · 3.2 MB</CardDescription>
    </CardHeader>
    <CardFooter>
        <Button variant="outline" size="sm">下载</Button>
    </CardFooter>
</Card>

评价卡片

vue
<Card variant="elevated">
    <CardContent>
        <p class="font-bold">“这款产品彻底改变了我们的工作流程。”</p>
    </CardContent>
    <CardFooter>
        <span class="text-sm font-black">张明 · 产品经理</span>
    </CardFooter>
</Card>

子组件

组件说明
Card根容器,支持 variant 和 padding 属性
CardHeader头部区域,带底部内边距
CardTitle标题文本,加粗且带字间距
CardDescription柔和的描述文本
CardContent主内容区域
CardFooter底部区域,弹性布局

Props

Card

属性类型默认值说明
variant'default' | 'elevated' | 'flat' | 'interactive' | 'primary' | 'secondary''default'卡片变体类型
padding'none' | 'sm' | 'default' | 'lg''default'卡片内边距
interactivebooleanfalse是否可点击,添加 role="button"tabindex="0" 和键盘支持
classstring自定义 CSS 类

事件

事件说明
activateinteractive=true(或 variant="interactive")时,点击或按 Enter/Space 键触发,返回原生 Event 对象

CardTitle

属性类型默认值说明
asstring'h3'渲染的 HTML 元素
classstring自定义 CSS 类

CardHeader / CardDescription / CardContent / CardFooter

属性类型默认值说明
classstring自定义 CSS 类

插槽

插槽作用域说明
default所有组件的默认插槽,用于插入内容

可访问性

  • 语义化结构CardTitle 默认渲染为 h3 标题元素,可通过 as 属性自定义为合适的标题层级
  • 交互反馈interactive 变体提供悬停效果,建议配合键盘焦点样式使用
  • 可点击卡片:设置 interactive 属性(或使用 variant="interactive")后,卡片会添加 role="button"tabindex="0",支持 Enter/Space 键触发 activate 事件(派发原生事件参数)
  • 内容组织:通过 CardHeaderCardContentCardFooter 子组件提供清晰的内容结构,便于辅助技术理解页面布局

可点击卡片

通过 interactive 属性将卡片变为可点击元素,自动添加手型光标和悬停提升效果:

vue
<script setup>
import { Card, CardContent, CardTitle } from 'brutx-ui-vue'

function handleClick(event) {
    console.log('Card activated!', event)
}
</script>

<template>
    <Card interactive @activate="handleClick">
        <CardContent>
            <CardTitle>Click me!</CardTitle>
            <p>This card is interactive and supports keyboard navigation.</p>
        </CardContent>
    </Card>
</template>

蛮力铸就。