UI Design System
build dev

Card

承载一个独立主题或对象摘要。中文惯用名:卡片。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.card
名称Card
二级分类数据展示(data-display)
用途承载一个独立主题或对象摘要
描述中文惯用名:卡片。

预览

静态结构:Card 渲染为 data-slot="card" 容器(gap-4 py-4,rounded 缺省 lg,即 --radius 基准圆角);有 title 时渲染 data-slot="card-header"(内 data-slot="card-title")与 data-slot="card-content",无 title 时仅渲染内容区,两者均带 px-4 水平内边距;bordered=false 时追加 border-transparent shadow-none 去边框与阴影。children 为 DSL 子树(可混排文案、按钮等)。

DSL 结构

DslNode
{
  "type": "Card",
  "props": {
    "title": "月度运营报告",
    "rounded": "lg",
    "bordered": true
  },
  "children": [
    {
      "type": "Text",
      "props": {
        "text": "2026-08 月报已生成,覆盖 12 项核心指标,较上月提升 8.4%。",
        "type": "secondary"
      }
    }
  ]
}

何时用

何时使用

  • 承载一个独立主题或对象摘要:单条记录、一个模块、一张看板的入口。
  • 需要在页面中划分出边界清晰的内容块(标题 + 内容 + 操作)。
  • 卡片网格中的单元容器:每张卡片一个对象,卡片间并列浏览。

何时不用

  • 展示同类对象的集合列表:单对象用 Card,同构集合用 List 或 Table。
  • 仅需分组留白而无独立主题:使用 Space / Flex 或分割线,不必都套卡片。
  • 页面级区块框架(含侧栏、头部):使用布局类组件(Page / Layout / Container)。

变体

变体视觉形态适用场景
带标题(缺省)标题行 + 内容区(header / content 分区)有明确主题的独立内容块
无标题纯容器仅内容区,无 header内容自带标题或仅作留白分组
bordered=false 无边框去边框与阴影,仅保留圆角与背景与页面背景同层、靠留白分隔的轻量卡片
rounded 圆角档位none / sm / md / lg / xl / 2xl / 3xl 七档按产品视觉规范调整圆角(缺省 lg)

API 属性

属性类型默认值说明
titlestring—卡片标题;缺省不渲染标题区
borderedbooleantrue是否有边框;false 去边框与阴影
rounded`CardRounded('none''sm''md'
childrenReactNode—卡片内容(DSL 子树),渲染于 data-slot="card-content" 内
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式(style 常作布局逃逸口,如 { flex: 1 })

使用规范

  • 一张卡片只表达一个主题或对象;同屏多卡片保持结构一致(都有标题或都无标题)。
  • 卡片内主操作每张最多一个(primary 按钮),其余降级为文字按钮或链接。
  • 嵌套卡片不超过一层,深层嵌套改用分割线与留白表达层级。
  • 卡片网格中避免内容高度差异过大导致视觉参差;必要时约束内容行数或统一高度来源。
  • 无边框卡片(bordered=false)需确保背景与页面有足够对比,否则容器边界会消失。

正例

  • ✓ 看板卡片:title「月度运营报告」+ 摘要文案 + primary「查看详情」按钮。
  • ✓ 卡片网格:每张卡片一个对象(rounded="lg" + bordered),网格内结构统一。
  • ✓ 轻量分组:bordered=false 在设置页中作分组容器,靠留白区分区块。

反例

  • ✕ 用 Card 展示同类对象的集合列表(应使用 List / Table,Card 表达单个对象)。
  • ✕ 卡片内堆叠多个不同主题的内容块,标题无法概括内容。
  • ✕ 给所有容器都套一层 Card,页面被边框切碎、层级反而模糊。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。