跳到正文

Avatar 头像

Avatar 显示一个人或一个 Agent 的头像,没有图片时显示名字缩写。AvatarGroup 把几个头像叠在一起,放不下的收成一个“+N”头像。

演示

基础用法

size 可以是 small、medium、large(和按钮同高,放在一行里能对齐),也可以是像素数。

形状和边框

头像跟随主题的圆角:Brutal 是直角,Elegant 是小圆角。round 变成圆形;bordered 在 Brutal 下加一圈墨线,在 Elegant 下加一圈浅色描边。

文字

文字默认是头像边长的 40%,放不下时会自动缩小,完整的名字也能装进去。可以在输入框里试试。

颜色

color 设置背景色,上面的文字颜色用 style.color 设置。用不同的颜色角色区分 Agent 和人很合适;除了缩写,也可以放图标。

加载失败

src 加载失败时先试 fallbackSrc,再不行就显示 renderFallback 或子元素。图片加载过程中也会先显示子元素。

搭配徽标

把头像包在 Badge 里,显示未读数或在线状态。

头像组

AvatarGroup 让头像互相叠压,并给每个头像加上边框把它们隔开。设置 max 后,放不下的会合并成一个“+N”头像。组上的 size 和 round 对里面所有头像生效;也可以直接把头像作为子元素传入,Avatar 和 PixelAvatar 可以混在一起。expandOnHover 在鼠标移上去时把头像展开,vertical 改成从上往下叠。

名字提示和剩余头像菜单

组件本身不带弹出层:用 renderAvatar 给每个头像包一个 Tooltip 显示名字,用 renderRest 把“+N”换成一个 Dropdown,点击后列出被收起的人。

懒加载

单独用 lazy 时交给浏览器原生的懒加载。配合 intersectionObserverOptions,图片会在滚进指定容器后才开始加载,在此之前显示 renderPlaceholder。

Avatar 属性

名称类型默认值说明版本
srcstringundefined图片地址。未发布
altstringundefined图片的替代文本。不传时图片视为装饰。未发布
childrenReactNodeundefined文字或图标。没有 src、图片加载中、所有图片都失败时显示。文字会自动缩小以放进头像。未发布
sizesmall | medium | large | numbermedium预设尺寸或以 px 为单位的边长。在头像组里默认用组的尺寸。未发布
roundbooleanfalse圆形,而不是主题的默认形状。未发布
borderedbooleanfalse加边框。在头像组里总是开启。未发布
colorstringundefined背景色。未发布
objectFitfill | contain | cover | none | scale-downcover图片如何填满头像。未发布
fallbackSrcstringundefinedsrc 加载失败时尝试的图片。未发布
renderFallback() => ReactNodeundefined所有图片都加载失败时显示的内容,默认是 children。未发布
renderPlaceholder() => ReactNodeundefined图片加载中显示的内容,默认是 children。未发布
lazybooleanfalse快进入视口时才加载图片。未发布
intersectionObserverOptions{ root?, rootMargin?, threshold? }undefined配合 lazy,头像进入这个容器后才加载。root 可以是元素或选择器。未发布
imgPropsImgHTMLAttributesundefined传给 <img> 元素的属性。未发布
onLoad(event) => voidundefined图片加载完成时调用。未发布
onError(event) => voidundefinedsrc 或 fallbackSrc 加载失败时调用。未发布

Avatar 也接受原生 span 属性和 ref。只放图标的头像应该加上 role="img" 和 aria-label。

AvatarGroup 属性

名称类型默认值说明版本
options{ src: string; alt?: string }[][]要显示的头像。选项类型可以自定义(泛型)。未发布
maxnumberundefined最多显示几个头像;超出时最后一个变成“+N”。未发布
maxStyleCSSPropertiesundefined“+N”头像的样式。未发布
sizesmall | medium | large | numberundefined组内头像的默认尺寸。未发布
roundbooleanundefined组内头像默认的 round。未发布
verticalbooleanfalse从上往下叠。未发布
expandOnHoverbooleanfalse鼠标悬停时展开。未发布
renderAvatar({ option }) => ReactNodeundefined渲染单个选项。未发布
renderRest({ options, rest }) => ReactNodeundefined渲染“+N”头像。未发布
childrenReactNodeundefined放在 options 之前的头像。未发布

AvatarGroup 渲染为带 role="group" 的 div,请给它一个说明成员是谁的 aria-label。“+N”头像读作“还有 N 个”。