组件/Avatar 头像

Avatar 头像

代表用户身份的图片、首字母或图标

已验证自 0.3.4

用法

基础

示例加载中...

尺寸

size 取预设名或自定义像素值。

示例加载中...

文字头像

示例加载中...

图标头像

示例加载中...

头像组

超过 max 的头像折叠为 +N。

示例加载中...

悬浮效果

hoverEffect 控制单个头像的悬浮反馈,spreadOnHover 让整组悬浮时展开。

示例加载中...

溢出浮层

overflowPopover 在 +N 上弹出被折叠的头像,overflow 插槽可替换面板内容。

示例加载中...

状态

示例加载中...

最佳实践

  • 生成身份标识时传 name,不要手写首字母。
  • src 是真实用户图片时提供有意义的 alt。
  • status 只表示在线状态;文字型系统状态用 TxStatusBadge。
  • 组内显示 status 时加大 overlap 或开启 spreadOnHover,避免状态点被遮住。
  • 溢出浮层只用于查看成员;需要操作成员时用列表组件。

API 参考

TxAvatar

属性

属性名类型默认值说明
srcstring-图片地址;加载失败时回退。
altstring-图片替代文本,src 为真实用户图片时提供。
namestring-用于生成首字母的名称。
iconstring-回退图标名,传给 TxIcon。
size'small' | 'medium' | 'large' | 'xlarge' | number | \${number}` | `${number}px``'medium'预设名或正数像素尺寸;无效值被忽略。
status'online' | 'offline' | 'busy' | 'away'-角落的状态点,位置随 shape 内缩。
shape'circle' | 'square' | 'rounded''circle'头像形状。
clickablebooleanfalse启用点击样式、按钮语义与 click 事件。
backgroundColorstring-回退内容的背景色。
textColorstring设置 backgroundColor 时默认为 '#ffffff'回退内容的文字颜色;仅与 backgroundColor 一起生效。

事件

事件名参数说明
click-clickable 时点击或按 Enter / Space 触发。

插槽

插槽名Props说明
default-自定义回退内容,优先于 icon 与 name。

TxAvatarGroup

属性

属性名类型默认值说明
maxnumber子节点数量折叠为 +N 前最多显示的头像数;负数按 0 处理。
sizeAvatarSize-注入未自行设置 size 的子头像。
overlapnumber | string8相邻头像的重叠距离,数字按 px 计。
hoverEffect'none' | 'lift''lift'单个头像的悬浮反馈;lift 上浮、加阴影并置顶。
spreadOnHoverbooleanfalse整组悬浮时把重叠过渡到 spreadOverlap。
spreadOverlapnumber | string0展开后的重叠距离,负值留出间隙。
overflowPopoverbooleanfalse在 +N 上挂载溢出浮层。
overflowPopoverTrigger'hover' | 'click''hover'浮层触发方式。
overflowPopoverPlacementPopoverPlacement'top'浮层相对 +N 的位置。

插槽

插槽名Props说明
default-TxAvatar 或兼容的头像 VNode。
overflow{ nodes: VNode[], count: number }溢出浮层的面板内容;nodes 为被 max 截掉的头像。

概述

  • 内容按图片、默认插槽、icon、name 首字母、默认 user 图标的顺序回退;图片加载失败同样回退。
  • 首字母取第一个与最后一个单词的首字符,并转为大写。
  • clickable 时根节点带 role="button" 与 tabindex="0",Enter / Space 与点击一样触发 click。
  • 组内 z-index 自左向右递增,右侧头像盖住左侧头像的右下角(含状态点);lift 将悬浮头像置顶。
  • 开启 overflowPopover 且有溢出时,+N 由 TxPopover 包裹;否则是普通头像,不产生浮层。
  • 减少动态效果时取消悬浮位移与过渡,保留置顶与阴影。

技术实现

  • 根节点不裁切,裁切在图片与回退层上,状态点因此能伸出形状。
  • 组内的负 margin 与 z-index 来自样式表(--tx-avatar-group-overlap、--tx-avatar-group-index),子头像只内联描边。
  • 源码:packages/tuffex/packages/components/src/avatar/。
查看源码
packages/tuffex/packages/components/src/avatar/index.ts

自定义

变量写入方用途
--tx-avatar-size自定义 size宽高。
--tx-avatar-font-size自定义 size回退文字与图标字号。
--tx-avatar-status-size自定义 size状态点外径(含描边)。
--tx-avatar-status-border自定义 size状态点描边宽度。
--tx-avatar-bgbackgroundColor回退背景色。
--tx-avatar-texttextColor(需 backgroundColor)回退文字颜色。
--tx-avatar-ring调用方 / 主题状态点与组内头像的描边色,默认 --tx-bg-color。
--tx-avatar-group-overlapoverlap解析后的重叠距离。
--tx-avatar-group-spread-overlapspreadOverlap展开后的重叠距离。
--tx-avatar-group-hover-z调用方 / 主题悬浮置顶的 z-index,默认 999。
--tx-avatar-group-overflow-width调用方 / 主题溢出面板换行前的最大宽度,默认 232px。
--tx-avatar-group-border调用方 / 主题组内头像的描边色。

--tx-avatar-*-preset、--tx-avatar-status-diameter、--tx-avatar-status-ring、--tx-avatar-status-inset、--tx-avatar-group-gap、--tx-avatar-group-index、--tx-avatar-group-more-z 是内部变量,不要直接设置。