跳转到内容

AvatarGroup 头像组 ​

将若干头像叠成一排,超出上限的部分收为一个计数。

用法 ​

一排叠放的头像:后一个压在前一个上,被压住的边由一圈底色分开

曦寒懿承

组件结构 ​

加粗的是必需部件。

data-scope="avatar-group":root · overflow-item

示例 ​

上限与溢出计数 ​

放置到上限为止,其余收为一个「+N」;截到几个、N 写多少由作者决定,组件只提供该项的身份与位置

曦寒懿承+2

尺寸 ​

直径、字号与叠放量在组上写一次,沿自定义属性下发给组内每个头像,「+N」随之更换

曦寒懿+3
曦寒懿+3
曦寒懿+3

使用者令牌 ​

直径、叠放量、分隔用的底色都保留了槽位,写在组上即整组更换

曦寒懿承+2

设计指引 ​

何时使用 ​

  • 表示一组参与者,且不需要逐一确认个体身份。

何时不用 ​

  • 需要逐个识别或操作时,排成列表。
  • 只有一个人时,直接使用头像。

特性 ​

  • max 决定显示数量,其余进入 overflow-item 计数。
  • 尺寸写在组上,组内头像一并跟随。

组合 ​

最佳实践 ​

  • 溢出计数应能打开查看完整名单。
  • 每个头像配文字提示给出姓名。

反模式 ​

  • 叠放过密,无法分辨人数。
  • 上限过大,一排头像占满整行。

API 参考 ​

产物 ​

层值
自定义元素<xh-avatar-group>
Vue 组件XhAvatarGroupOverflowItem XhAvatarGroupRoot
状态机无,connect 直接由 props 算属性
皮肤@xihan-ui/styles/avatar-group.css

Props ​

属性类型必填说明
maxnumber展示上限:本组展示的头像数量,其余收进 overflow-item。 头像由作者渲染,因此裁切数量与 +N 中的 N 都由作者决定; 组件把这个上限如实写入根上的 data-max。
sizeSize尺寸:sm / md / lg,写入根上并沿继承流下发给组内每一个头像。

connect API ​

getXxxProps() 返回对应部件的宿主属性。

成员类型说明
getRootProps() => T['element']
getOverflowItemProps() => T['element']

无障碍 ​

键盘 ​

规格出处:W3C APG

无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。

样式参考 ​

皮肤 ​

@xihan-ui/styles/avatar-group.css 使用 [data-scope="avatar-group"][data-part="root"] 部件选择器,位于 xihan.components 层。覆盖样式使用 xihan.overrides。

CSS 变量 ​

本组件公开覆盖槽由独立皮肤的实际消费位生成;默认来源、作用部件和状态均与 CSS 同源。

变量部件CSS 属性状态默认来源说明
--xh-avatar-group-font-sizeoverflow-item
root
--xh-avatar-font-size
font-size
default
size=lg
size=sm
--xh-control-caption-lg
--xh-control-caption-md
--xh-control-caption-sm
avatar-group 的 overflow-item、root 部件 --xh-avatar-font-size、font-size 覆盖槽。
--xh-avatar-group-font-weightoverflow-itemfont-weightdefault--xh-font-weight-mediumavatar-group 的 overflow-item 部件 font-weight 覆盖槽。
--xh-avatar-group-overflow-item-bgoverflow-itembackgrounddefault--xh-bg-muted-opaqueavatar-group 的 overflow-item 部件 background 覆盖槽。
--xh-avatar-group-overflow-item-fgoverflow-itemcolordefault--xh-fg-mutedavatar-group 的 overflow-item 部件 color 覆盖槽。
--xh-avatar-group-overlaprootmargin-inline-startdefault
size=lg
size=sm
--xh-space-2
--xh-space-2_5
--xh-space-3
avatar-group 的 root 部件 margin-inline-start 覆盖槽。
--xh-avatar-group-radiusoverflow-itemborder-radiusdefault--xh-shape-circleavatar-group 的 overflow-item 部件 border-radius 覆盖槽。
--xh-avatar-group-ringrootbox-shadowdefault--xh-bg-surfaceavatar-group 的 root 部件 box-shadow 覆盖槽。
--xh-avatar-group-sizeoverflow-item
root
--xh-avatar-size
block-size
inline-size
default
size=lg
size=sm
--xh-control-h-lg
--xh-control-h-md
--xh-control-h-sm
avatar-group 的 overflow-item、root 部件 --xh-avatar-size、block-size、inline-size 覆盖槽。

动效 ​

本组件皮肤不含过渡与关键帧,也没有脚本驱动的动效:状态一变,外观立即到位。

RTL ​

皮肤用逻辑属性排布(inline-start 一族),dir="rtl" 下自动镜像。

Released under The MIT License