组件/Card 卡片

Card 卡片

带头部、正文与底部插槽的表面容器

已验证自 0.3.4

用法

基础

示例加载中...

头部与底部

示例加载中...

惯性

inertial 让卡片跟随指针位移,离开后回弹;inertialMaxOffset 限制位移,inertialRebound 调节弹性。

示例加载中...

标题

示例加载中...

操作按钮

示例加载中...

变体

plain 去掉边框与悬停反馈。

示例加载中...

背景材质

background 选择表面材质,推荐 refraction。

示例加载中...

空状态

示例加载中...

浮层面板

Popover、SearchSelect 等浮层的面板由 TxCard 渲染,用 panel-* 属性配置。

示例加载中...

尺寸

size 只影响内边距。

示例加载中...

内边距与圆角

示例加载中...

状态

示例加载中...

最佳实践

  • 整卡导航或选择时才用 clickable;独立动作放进插槽里的真实按钮或链接。
  • 外观优先用 variant、shadow、size、radius、padding 调整,CSS 变量只用于对齐插槽内容或遮罩底色。
  • 需要折射或滤镜的底层参数(displace、distortionScale、redOffset 等)时改用 TxBaseSurface。

API 参考

属性

属性类型默认值说明
variant'solid' | 'dashed' | 'plain''solid'边框形态;plain 无边框、无悬停反馈。
background'pure' | 'blur' | 'glass' | 'refraction' | 'mask''pure'表面材质。
shadow'none' | 'soft' | 'medium''none'阴影强度。
size'small' | 'medium' | 'large''medium'内边距预设:10 / 12 / 16 px。
radiusnumber18圆角(px)。
paddingnumber-内边距(px),优先于 size。
glassBlurbooleantrueglass / refraction 下启用模糊。
glassBlurAmountnumber22glass / refraction 下的模糊半径(px)。
glassOverlaybooleantrueglass / refraction 下启用高光层。
glassOverlayOpacitynumber0.18高光层透明度。
maskOpacitynumber0.75mask 下的表面透明度,收敛到 0..1。
fallbackMaskOpacitynumber0.26运动中降级为遮罩时的透明度(0–1)。
surfaceMovingbooleanfalse外部运动标记,与惯性运动合并后转发给表面。
refractionStrengthnumber62折射强度(0–100),驱动色散与扭曲。
refractionProfile'soft' | 'filmic' | 'cinematic''filmic'折射风格预设。
refractionTone'mist' | 'balanced' | 'vivid''vivid'折射色调预设;vivid 避免发灰。
refractionAnglenumber-24色散主方向(度)。
refractionLightFollowMousebooleanfalse高光锚点跟随指针。
refractionLightFollowIntensitynumber0.45跟随权重(0–1),影响色散角度与强度。
refractionLightSpringbooleantrue光源跟随使用弹簧过渡。
refractionLightSpringStiffnessnumber0.18光源弹簧刚度,收敛到 0.01–0.55。
refractionLightSpringDampingnumber0.84光源弹簧阻尼,收敛到 0.55–0.99。
clickablebooleanfalse启用悬停与按压反馈(缩至 0.985),并派发 click。
loadingbooleanfalse用 TxSpinner 遮罩覆盖卡片。
loadingSpinnerSizenumber-Spinner 尺寸(px),省略时为 12。
disabledbooleanfalse禁用样式,阻止 click 与指针动效。
inertialbooleanfalse跟随指针位移,离开后弹簧回弹。
inertialMaxOffsetnumber22最大跟随位移(px)。
inertialReboundnumber0.12回弹系数,收敛到 0..1;越大越有弹性。

事件

事件名参数说明
click(event: MouseEvent)可点击且未禁用时,点击或按 Enter / Space 触发。

插槽

插槽名Props说明
default-正文。
header-正文上方的头部。
footer-正文下方的底部。
cover-头部与正文之前的封面。

概述

  • 可点击时根节点带 role="button" 与 tabindex="0",Enter / Space 与点击一样触发 click;否则是无语义的 div。
  • 可点击卡片禁用时设置 aria-disabled 并移出 Tab 序列。
  • 只响应卡片自身的 Enter / Space,插槽内控件的按键不会触发卡片。
  • loading 的遮罩带 aria-hidden,读屏或表单忙碌提示由调用方负责。
  • background 作为表面模式转发给 TxBaseSurface:mask 使用 maskOpacity,glass 与 refraction 使用模糊与高光参数;折射参数只在 refraction 下生效。

技术实现

  • 表面是 aria-hidden 的 TxBaseSurface;惯性由 requestAnimationFrame 弹簧写入 --tx-card-dx / --tx-card-dy,静止后停止。
  • 源码:packages/tuffex/packages/components/src/card/。
查看源码
packages/tuffex/packages/components/src/card/index.ts

自定义

EXAMPLE.CSS
.custom-card {
  /* mask 与折射降级表面采样的底色 */
  --tx-card-fake-background: color-mix(in srgb, var(--tx-bg-color-overlay, #fff) 92%, transparent);
}
变量写入方用途
--tx-card-radiusradius根节点、表面、封面与加载层的圆角。
--tx-card-paddingpadding 或 size内边距与封面的负外边距。
--tx-card-dx / --tx-card-dy惯性动效根节点位移;不要手动设置。
--tx-card-fake-background调用方 / 主题mask 与折射降级表面的底色。
--tx-surface-refraction-mask-color根节点内联样式把 --tx-card-fake-background 转给 TxBaseSurface;改前者即可。

跟随应用主题时覆盖全局 token,如 --tx-bg-color-overlay、--tx-border-color-light、--tx-color-primary。