Avatar 头像

Avatar 组件可以用来代表人物或对象, 支持使用图片,图标或者文字作为 Avatar

基础用法

使用 shapesize 属性来设置 Avatar 的形状和大小。

Avatar 头像 - 图1

  1. <template>
  2. <el-row class="demo-avatar demo-basic">
  3. <el-col :span="12">
  4. <div class="sub-title">circle</div>
  5. <div class="demo-basic--circle">
  6. <div class="block">
  7. <el-avatar :size="50" :src="circleUrl" />
  8. </div>
  9. <div v-for="size in sizeList" :key="size" class="block">
  10. <el-avatar :size="size" :src="circleUrl" />
  11. </div>
  12. </div>
  13. </el-col>
  14. <el-col :span="12">
  15. <div class="sub-title">square</div>
  16. <div class="demo-basic--circle">
  17. <div class="block">
  18. <el-avatar shape="square" :size="50" :src="squareUrl" />
  19. </div>
  20. <div v-for="size in sizeList" :key="size" class="block">
  21. <el-avatar shape="square" :size="size" :src="squareUrl" />
  22. </div>
  23. </div>
  24. </el-col>
  25. </el-row>
  26. </template>
  27. <script lang="ts" setup>
  28. import { reactive, toRefs } from 'vue'
  29. const state = reactive({
  30. circleUrl:
  31. 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png',
  32. squareUrl:
  33. 'https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png',
  34. sizeList: ['small', '', 'large'] as const,
  35. })
  36. const { circleUrl, squareUrl, sizeList } = toRefs(state)
  37. </script>
  38. <style scoped>
  39. .demo-basic {
  40. text-align: center;
  41. }
  42. .demo-basic .sub-title {
  43. margin-bottom: 10px;
  44. font-size: 14px;
  45. color: var(--el-text-color-secondary);
  46. }
  47. .demo-basic .demo-basic--circle,
  48. .demo-basic .demo-basic--square {
  49. display: flex;
  50. justify-content: space-between;
  51. align-items: center;
  52. }
  53. .demo-basic .block:not(:last-child) {
  54. border-right: 1px solid var(--el-border-color);
  55. }
  56. .demo-basic .block {
  57. flex: 1;
  58. }
  59. .demo-basic .el-col:not(:last-child) {
  60. border-right: 1px solid var(--el-border-color);
  61. }
  62. </style>

展示类型

支持使用图片,图标或者文字作为 Avatar。

Avatar 头像 - 图2

  1. <template>
  2. <div class="demo-type">
  3. <div>
  4. <el-avatar :icon="UserFilled" />
  5. </div>
  6. <div>
  7. <el-avatar
  8. src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"
  9. />
  10. </div>
  11. <div>
  12. <el-avatar> user </el-avatar>
  13. </div>
  14. </div>
  15. </template>
  16. <script setup lang="ts">
  17. import { UserFilled } from '@element-plus/icons-vue'
  18. </script>
  19. <style scoped>
  20. .demo-type {
  21. display: flex;
  22. }
  23. .demo-type > div {
  24. flex: 1;
  25. text-align: center;
  26. }
  27. .demo-type > div:not(:last-child) {
  28. border-right: 1px solid var(--el-border-color);
  29. }
  30. </style>

回退行为

图片加载失败时的回退行为。

Avatar 头像 - 图3

  1. <template>
  2. <div class="demo-type">
  3. <el-avatar :size="60" src="https://empty" @error="errorHandler">
  4. <img
  5. src="https://cube.elemecdn.com/e/fd/0fc7d20532fdaf769a25683617711png.png"
  6. />
  7. </el-avatar>
  8. </div>
  9. </template>
  10. <script lang="ts" setup>
  11. const errorHandler = () => true
  12. </script>

适应容器

当使用图片作为用户头像时,设置该图片如何在容器中展示。与 object-fit Avatar 头像 - 图4 属性一致

Avatar 头像 - 图5

  1. <template>
  2. <div class="demo-fit">
  3. <div v-for="fit in fits" :key="fit" class="block">
  4. <span class="title">{{ fit }}</span>
  5. <el-avatar shape="square" :size="100" :fit="fit" :src="url" />
  6. </div>
  7. </div>
  8. </template>
  9. <script lang="ts" setup>
  10. import { reactive, toRefs } from 'vue'
  11. const state = reactive({
  12. fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
  13. url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
  14. })
  15. const { fits, url } = toRefs(state)
  16. </script>
  17. <style scoped>
  18. .demo-fit {
  19. display: flex;
  20. text-align: center;
  21. justify-content: space-between;
  22. }
  23. .demo-fit .block {
  24. flex: 1;
  25. display: flex;
  26. flex-direction: column;
  27. flex-grow: 0;
  28. }
  29. .demo-fit .title {
  30. margin-bottom: 10px;
  31. font-size: 14px;
  32. color: var(--el-text-color-secondary);
  33. }
  34. </style>

Avatar API

Avatar 属性

名称说明类型默认值是否必需
icon设置 Avatar 的图标类型,具体参考 Icon 组件string | Component
sizeAvatar 大小number | ‘large’ | ‘default’ | ‘small’‘default’
shapeAvatar 形状‘circle’ | ‘square’‘circle’
srcAvatar 图片的源地址string
src-set图片 Avatar 的原生 srcset 属性string
alt图片 Avatar 的原生 alt 属性string
fit当展示类型为图片的时候,设置图片如何适应容器‘fill’ | ‘contain’ | ‘cover’ | ‘none’ | ‘scale-down’‘cover’

Avatar 事件

名称说明类型
error图片加载失败时触发(e: Event) => void

Avatar 插槽

插槽名说明
default自定义头像展示内容

源代码

组件 Avatar 头像 - 图6 文档 Avatar 头像 - 图7

贡献者

Avatar 头像 - 图8 三咲智子

Avatar 头像 - 图9 云游君

Avatar 头像 - 图10 JeremyWuuuuu

Avatar 头像 - 图11 Aex

Avatar 头像 - 图12 C.Y.Kun

Avatar 头像 - 图13 류한경

Avatar 头像 - 图14 Delyan Haralanov

Avatar 头像 - 图15 Herrington Darkholme

Avatar 头像 - 图16 bqy

Avatar 头像 - 图17 Carter Li

Avatar 头像 - 图18 liangjunjie

Avatar 头像 - 图19 Hades-li