Avatar 使用手册
v2.12.5 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
展示用户或团队头像,支持图片、文字和渐变占位,让列表、评论与成员信息更易辨认。
使用选择
用于用户或团队身份。单个头像用 Avatar,重叠成员用 AvatarGroup;纵向联系人列表使用 Avatar 配合普通列表和文本。
通过 src 显示头像,使用 fallback / fallbackText 配置回退;为同一身份提供稳定 fallbackSeed。
附属角标用
as="badge",替换头像视觉用as="avatar-image";尺寸优先使用显式 size,其次父级头像尺寸。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
布局模型
主布局模型:内禀原子布局。
Avatar 的根节点只暴露一个由
size/ 父级尺寸上下文 /renderHints决定的头像盒,作为 Button、MenuItem、Field 等外部布局的子项时表现为 Hug。Avatar 作为 inline-level 原子盒时统一使用中线对齐,内部图片、Gradient 与
empty图标不得改变同排头像的垂直位置。内部图片层、默认 Gradient / empty 图标层、hover 滤镜与 badge 切割遮罩都属于 Avatar 私有布局,不对外暴露 Leading / Content / Trailing 槽位。
as="badge"只用于 Avatar 内部识别角标角色;Avatar 自身不会输出data-auto-layout,也不会接管子组件的通用排列能力。外部需要排列多个头像时应使用
AvatarGroup,不要把 Avatar 改造成集合布局。
关键字 (Keyword)
使用示例
智能行为
默认回退: 无图片或图片加载失败时,优先显示显式
fallback组件;未传时default使用 Gradient,empty使用灰色用户图标。默认 Gradient 的选择优先级为fallbackColor→fallbackSeed→aria-label/data-name/title→ 固定blue。推荐把稳定user.id传给fallbackSeed;哈希结果跨刷新稳定,不需要存储颜色。名称只作为兼容 seed,不生成首字母;Gradient 常态基础形变默认关闭,可用gradientMotion常驻开启,或由 hover 按需运行。回退延迟: 内部固定延迟显示回退图标,减少加载闪烁。
角色识别: 内部组件 (
Badge,Icon) 若设置as="badge"将自动获得定位与尺寸逻辑。子组件定位: 提供基于
em的自适应 Context 渲染样式。智能分辨率选择: 自动将解析后的尺寸(Resolved Size)传递给资源组件(如
AvatarByewind),资源组件会根据该尺寸选择 3x 分辨率 的高精图片(例如 80px 尺寸选择 240px 图片)。默认 Hover: 非 disabled 图片与普通组件头像每次进入时随机选择 blue / cyan / green / red / orange / purple 之一,并只对实际图形 alpha 单层叠加;Gradient fallback 无论常态基础形变是否开启,都保持原有五色循环,并按需运行不同周期的四层水波形变。
图片与普通组件 fallback 的六色 hover Overlay 是 StyleSpec §2.1.3(源码参考:specs/maintainers/StyleSpec.md) 为 Avatar 单独登记的专业艺术色例外:颜色由 Avatar 私有 hover 视觉拥有,不映射为 SnowUI 通用 Token。默认 Gradient 画面的固定配色由 Gradient 自己的例外登记拥有;作为 fallback 使用 GradientMotion 时,其 shader 画面颜色同样由 GradientMotion 自己拥有。三项例外都不扩展到 Avatar 的尺寸、排版、常规背景、状态、公开通用颜色入口或样式优先级。
Avatar 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
Avatar 类型与状态
必填属性:无具名必填属性。
可双向绑定:本组件未声明具名双向绑定属性;状态更新通过公开回调或所属宿主处理。
继承声明:FrameProps。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
ResourceSize
来源:components/src/context.ts
GradientVariant
来源:components/src/components/Gradient.svelte
AvatarVariant
来源:components/src/components/Avatar.svelte