Skip to content

Avatar 头像

用来代表用户或事物,支持图片、图标或字符展示。

基础用法

头像有三种尺寸,两种形状可选。

Avatar
Avatar
Avatar
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar size="large" src="https://images.unsplash.com/photo-1494790108755-2616b612b786?w=80&h=80&fit=crop&crop=face" />
    <ExAvatar src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=64&h=64&fit=crop&crop=face" />
    <ExAvatar size="small" src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=48&h=48&fit=crop&crop=face" />
  </div>
</template>

自定义尺寸

除了预设的三种尺寸,还可以使用数字自定义头像大小。

Avatar
Avatar
Avatar
Avatar
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar :size="24" src="https://example.com/avatar-24.jpg" />
    <ExAvatar :size="36" src="https://example.com/avatar-36.jpg" />
    <ExAvatar :size="56" src="https://example.com/avatar-56.jpg" />
    <ExAvatar :size="72" src="https://example.com/avatar-72.jpg" />
  </div>
</template>

不同形状

支持两种形状:circle(圆形)和 square(方形)。

Avatar
Avatar
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar shape="circle" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=64&h=64&fit=crop&crop=face" />
    <ExAvatar shape="square" src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=64&h=64&fit=crop&crop=face" />
  </div>
</template>

类型

支持三种类型:图片、Icon 以及字符,其中 Icon 和字符型可以自定义图标颜色及背景色。

Avatar
USER
AB
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar src="https://images.unsplash.com/photo-1544725176-7c40e5a71c5e?w=64&h=64&fit=crop&crop=face" />
    <ExAvatar icon="user" />
    <ExAvatar text="USER" />
    <ExAvatar>AB</ExAvatar>
  </div>
</template>

自定义颜色

可以自定义背景色和文字颜色。

A
B
C
D
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar text="A" background-color="#f56565" text-color="#ffffff" />
    <ExAvatar text="B" background-color="#48bb78" text-color="#ffffff" />
    <ExAvatar text="C" background-color="#ed8936" text-color="#ffffff" />
    <ExAvatar text="D" background-color="#9f7aea" text-color="#ffffff" />
  </div>
</template>

带徽标

使用 ExBadge 组件包裹头像来实现徽标功能,支持在线状态、消息提示或认证标识。

Avatar
Avatar
3
VIP
Avatar
99
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <!-- 在线状态点 -->
    <ExBadge dot type="success">
      <ExAvatar src="https://example.com/avatar1.jpg" />
    </ExBadge>
    
    <!-- 消息数量 -->
    <ExBadge :count="3" type="danger">
      <ExAvatar src="https://example.com/avatar2.jpg" />
    </ExBadge>
    
    <!-- 认证标识 -->
    <ExBadge count="✓" type="warning">
      <ExAvatar text="VIP" />
    </ExBadge>
    
    <!-- 大数量显示 -->
    <ExBadge :count="99" type="primary">
      <ExAvatar src="https://example.com/avatar4.jpg" />
    </ExBadge>
  </div>
</template>

头像组

使用 ExAvatarGroup 可以展示一组头像,支持设置最大显示数量。

基础头像组

Avatar
Avatar
Avatar
Avatar

限制显示数量

Avatar
Avatar
Avatar
+3

不同尺寸的头像组

Avatar
Avatar
Avatar
Avatar
Avatar
Avatar
vue
<template>
  <div>
    <!-- 基础头像组 -->
    <ExAvatarGroup>
      <ExAvatar src="https://example.com/avatar1.jpg" />
      <ExAvatar src="https://example.com/avatar2.jpg" />
      <ExAvatar src="https://example.com/avatar3.jpg" />
      <ExAvatar src="https://example.com/avatar4.jpg" />
    </ExAvatarGroup>

    <!-- 限制显示数量 -->
    <ExAvatarGroup :max-count="3">
      <ExAvatar src="https://example.com/avatar1.jpg" />
      <ExAvatar src="https://example.com/avatar2.jpg" />
      <ExAvatar src="https://example.com/avatar3.jpg" />
      <ExAvatar src="https://example.com/avatar4.jpg" />
      <ExAvatar src="https://example.com/avatar5.jpg" />
      <ExAvatar src="https://example.com/avatar6.jpg" />
    </ExAvatarGroup>

    <!-- 不同尺寸 -->
    <ExAvatarGroup size="small">
      <ExAvatar src="https://example.com/avatar1.jpg" />
      <ExAvatar src="https://example.com/avatar2.jpg" />
      <ExAvatar src="https://example.com/avatar3.jpg" />
    </ExAvatarGroup>
  </div>
</template>

错误处理

当图片加载失败时,会显示错误提示,点击可重新加载。

加载失败的头像
不存在的图片
vue
<template>
  <div style="display: flex; gap: 16px; align-items: center;">
    <ExAvatar src="https://invalid-url.com/avatar.jpg" alt="加载失败的头像" />
    <ExAvatar src="https://example.com/not-found.jpg" alt="不存在的图片" />
  </div>
</template>

API

ExAvatar Props

参数说明类型默认值
shape指定头像的形状'circle' | 'square''circle'
size设置头像的大小'small' | 'medium' | 'large' | number'medium'
src图片头像的资源地址string-
srcset图片的 srcset 属性string-
alt图像无法显示时的替代文本string-
text文字头像的内容string-
backgroundColor自定义背景颜色string-
textColor自定义文字颜色string-
draggable是否可拖拽booleanfalse
crossOrigin跨域设置'anonymous' | 'use-credentials' | ''-
gap文字间距number4
ariaLabel无障碍标签string-
title鼠标悬停提示string-

ExAvatar Events

事件名说明回调参数
error图片加载失败的事件(e: Event) => void
load图片加载成功的事件(e: Event) => void
click点击事件(e: MouseEvent) => void

ExAvatar Slots

名称说明
default自定义头像展示内容
icon自定义图标内容
error自定义错误状态内容

ExAvatar Methods

方法名说明参数
getElement获取头像DOM元素-
reload重新加载图片-

ExAvatarGroup Props

参数说明类型默认值
maxCount最大显示数量number-
maxStyle超出数量的样式Record<string, string | number>-
size头像尺寸'small' | 'medium' | 'large' | number-
shape头像形状'circle' | 'square'-
spacing头像间距number | string'8px'

ExAvatarGroup Events

事件名说明回调参数
overflowClick点击超出数量时触发(count: number) => void

ExAvatarGroup Slots

名称说明参数
default头像列表-
avatar自定义头像渲染{ avatar: ExAvatarProps, index: number }