组件/卡片展开

卡片展开

内容驱动的九种展开几何与聚焦模糊链接,支持选择、邮票参数和键盘操作。

自 0.6.3BETA

当前组件文档正在开发中

该页面正在持续迁移,示例与 API 可能会继续调整。

概述

TxCardSpread 使用调用方的卡片数据。每种布局保留独立坐标、层叠顺序和旋转支点。未控制展开状态时,悬停或键盘聚焦会展开卡片,按钮可以固定展开。v-model:expanded 直接控制布局。v-model 表示从 0 开始的当前项,与展开状态相互独立。

用法

全部来源布局

示例加载中...

演示展示九种展开和额外的 focus-blur。你可以按原始 ID 筛选,并用滑块修改邮票弧度、间距和垂直偏移。演示图片是自制内联 SVG,不包含上游素材。

变体几何与来源默认值
card-arc-5底部中心支点;角度 30°、间距 70px,垂直停点为 [10,-2,-10,-2,10]。
card-arc-7七个独立弧线停点;角度 45°、间距 110px、偏移 30px。
card-long-arc-5更宽、更平的弧线;角度 15°、间距 140px、偏移 20px。
card-linear-spread仅水平位移;间距 90px。
card-corner-fan左下角支点;默认旋转从 −10° 到 +30°。
card-stamp-arc邮票虚线边缘;角度系数为 [-1,-0.48,0,0.48,1],间距 180px、偏移 40px。
card-cascade-stagger中心支点;每级向右 14px、向上 28px、旋转 6°。收起时保留 2px 错位。
card-scatter-spread独立的发牌坐标和旋转角度,不替换成对称扇形。
card-wheel-fan支点在卡片下方 110% 处;旋转范围为 ±36°,垂直停点为 [-8,-22,-28,-22,-8]。
focus-blur保留额外 FocusBlur 行为:悬停或聚焦项清晰,其他项模糊、淡出,虚线括号按弹簧展开。

五点与七点布局会按来源停点插值,支持其他卡片数量。缺少数据时不会生成额外卡片。

最佳实践

  • 提供稳定的 id 和图片替代文本。title 同时作为选择控件的名称。
  • 应用需要控制展开状态时使用 expanded。省略这个属性可启用悬停、聚焦和固定展开按钮。
  • angle、gap 和 yOffset 对应邮票来源的弧度、展开间距和偏移。其他布局在省略参数时保留各自默认值。
  • 卡片插槽位于选择按钮内,请提供非交互内容。focus-blur 项有 href 时会渲染真实链接。
  • 宽布局在小屏幕上支持横向滚动。size 同时缩放卡片与几何坐标。

API 参考

属性

属性类型默认值说明
itemsMotionCardItem[]必填调用方内容;空数组只渲染 #empty。
modelValuenumber内部 0从 0 开始的当前项。
variantCardSpreadVariantcard-arc-5上表中的十个 ID;常量由 CARD_SPREAD_VARIANTS 导出。
expandedboolean未设置控制展开;未设置时启用悬停、聚焦和固定展开。
anglenumber按变体来源旋转角度,单位为度。
gapnumber按变体水平展开间距,单位为像素。
yOffsetnumber按变体来源垂直偏移,单位为像素。
hoverIntensitynumber1位移与旋转的倍数,不改变卡片缩放。
durationnumber500过渡时长,单位为毫秒;时间曲线使用共享弹簧。
colorfulbooleanfalse使用主题色浅色卡片;单项 color 优先。
blurAmountnumber4focus-blur 非当前项的模糊像素值。
opacityAmountnumber0.4focus-blur 非当前项的不透明度。
showBracketsbooleantrue显示 focus-blur 聚焦括号。
animatedbooleantrue只控制动效;关闭后仍可选择和展开。
disabledbooleanfalse禁止选择、链接导航和固定展开。
sizexs / sm / md / lgmd卡片与几何缩放。
ariaLabelstringCard spread分组的无障碍名称。
expandLabelstringExpand cards可本地化的展开按钮文字。
collapseLabelstringCollapse cards可本地化的固定展开或受控按钮文字。

MotionCardItem 字段为 id?: string | number、title?、description?、src?、alt?、date?、href? 和 color?: string。图片和文字来自调用方数据。color 接受 CSS 颜色或主题变量表达式。

事件

事件参数含义
update:modelValueindex: number卡片、链接或键盘触发选择。
update:expandedexpanded: boolean固定展开按钮或 Escape 请求。
selectitem: MotionCardItem, index: number当前调用方数据项。

插槽与实例方法

API契约
#item{ item, index, selected, expanded };替换内容,不改变卡片几何。
#emptyitems.length === 0 时的空状态内容。
select(index)选择已有项;禁用时不执行。
toggle()切换固定展开或受控展开;禁用时不执行。

左右方向键、Home 和 End 选择卡片,原生按钮支持 Enter 和 Space。Escape 释放固定展开,并发出受控收起请求。键盘聚焦展开卡片,并显示聚焦轮廓。

技术实现

来源为 Amicro 的 CardArc5、CardArc7、CardLongArc5、CardLinearSpread、CardCornerFan、CardStampArc、CardCascadeStagger、CardScatterSpread、CardWheelFan 和 FocusBlur。固定提交为 43c29ce9cdd16459e3eab4992381b8d35b38776a,采用 MIT,Copyright (c) 2026 SYED SUBHAN UDDIN。

变换使用已有共享弹簧编译器。useMotionActivity 在离屏、文档隐藏、KeepAlive 失活和减少动态效果时移除动效,内容与操作仍可用。组件不引入 React/Motion 运行时,也不包含外部演示素材。