GradientMotion 使用手册
v4.0.1 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
以流动扫光呈现动态渐变,可用于背景、头像占位或可裁切的媒体区域。
使用选择
用于装饰性渐变动效背景。普通背景优先主题 Token;专业艺术色范围仅限该图形,不能推广为任意 UI 颜色。
用 variant 选择图形、paused 暂停,speed / intensity 等调整效果。
为静态身份使用稳定 seed;decorative 默认开启。动效颜色不替代主题色系统。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
功能概览
内置 glimm 的 6 种 palette:
prism、berry、lagoon、citrus、azure、ember可选颜色与 glimm.dev 截图中的 6 个底部 swatch 对齐,组件通过
variant选择颜色WebGL shader 还原 glimm 的 cosine palette 公式:
color(t)=a+b*cos(2π*(c*t+d))还原 glimm sweep band 的默认参数:
bandTight=14、waveAmount=1、rippleAmount=1、brightness=1、duration=800支持
variant="random",可按seed稳定随机一种 glimm palette支持
variant="avatar"作为默认头像专用变体:按seed稳定取色,速度为普通 sweep 的0.2倍;色带固定在画布中,只让波形与色域缓慢往复晃动,全程不闪白当组件收到
as="avatar-image"时会自动启用同样的慢速无空白头像模式,因此Avatar fallback={GradientMotion}也不会出现白色空白期支持
direction="ltr|rtl|ttb|btt"控制扫光方向支持
speed、size/width/height/radius、paused保留旧预设名作为兼容别名,但视觉都会映射到 glimm 的 6 种 palette
支持外部裁切:圆形、圆角、方形、任意父容器
overflow: hidden或clip-path支持
as角色透传;在 Avatar 里推荐as="avatar-image"
布局模型
主布局模型:内禀原子布局。
GradientMotion 的根节点只输出一个由尺寸、圆角与 shader 算法决定的视觉面。
组件不管理子内容排列,不接入 Leading / Content / Trailing 三槽位。
作为其他组件的子项时表现为 Hug;作为背景时通常配合
class="w-full h-full"或外部style固定尺寸。as透传宿主角色;as="avatar-image"还会启用连续填充头像模式,不改变组件的内禀布局。
API 参考
as="avatar-image"会自动启用头像专用连续填充逻辑;如需直接使用组件,也可显式传variant="avatar"。
专业艺术色例外
GradientMotion 的内置 glimm cosine palette、WebGL 不可用时的 CSS fallback palette,以及 colors 传入的四个六位 HEX 采样色,已在 StyleSpec §2.1.3(源码参考:specs/maintainers/StyleSpec.md) 单独登记为专业艺术色例外。shader 必须将这些颜色转换为数值向量并生成连续色域;它们表达生成式画面,不表达按钮、文字、状态或表面语义,因此不要求映射到 SnowUI 语义 Token。
该例外只覆盖 GradientMotion 专业画面的 palette。colors 不是通用颜色 Prop 协议,不得据此让其他组件跳过 resolveSnowUIColor();组件根的尺寸、圆角、外部 class / style 覆盖、无障碍、外层 motion 与 reduced-motion 仍遵守现行规范。新增 palette 类型或把这些颜色用于 UI 语义前必须重新登记。
使用示例
GradientMotion 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
GradientMotion 类型与状态
必填属性:无具名必填属性。
可双向绑定:本组件未声明具名双向绑定属性;状态更新通过公开回调或所属宿主处理。
继承声明:Omit<FrameProps, "size" | "width" | "height" | "radius">。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
GradientMotionVariant
来源:components/src/components/GradientMotion.svelte
GradientMotionDirection
来源:components/src/components/GradientMotion.svelte
GradientMotionColors
来源:components/src/components/GradientMotion.svelte
LoopMotionConfig
来源:components/src/logic/frame-types.ts
LoopMotionPreset
来源:components/src/logic/frame-types.ts
MotionConfig
来源:components/src/logic/motion-config.ts
SnowUIColor
来源:components/src/lib/color.ts
EasingFunction
来源:components/src/logic/motion-config.ts