源代码地址

version:element-plus 1.0.1-beta.0

<template><span :class="avatarClass" :style="sizeStyle"><!-- 先判断是否有 src 地址,有再判断是否加载成功 --><imgv-if="(src || srcSet) && !hasLoadError":src="src":alt="alt":srcset="srcSet":style="fitStyle"@error="handleError"><!-- 再判断是否传入 icon --><i v-else-if="icon" :class="icon"></i><!-- 最后才是默认插槽 也就是说不传 src 和 icon ,插槽才有用 --><slot v-else></slot></span>
</template>
<script lang="ts">
import { defineComponent, computed, ref, PropType } from 'vue'const ERROR_EVENT = 'error'
export default defineComponent({name: 'ElAvatar',props: {size: {type: [Number, String] as PropType<number | string>, // 接受 number 和 stringvalidator(this: never, val: unknown) {if (typeof val === 'string') {return ['large', 'medium', 'small'].includes(val) // 字符串判断是不是三种类型中的}return typeof val === 'number'},default: 'large',},shape: {type: String,default: 'circle',validator(this: never, val: string) {return ['circle', 'square'].includes(val) // 只支持 圆 和 方},},icon: String, // icon 组件的类名src: String,alt: String,srcSet: String,fit: {type: String,default: 'cover',},},emits: [ERROR_EVENT],setup(props, { emit }) {const hasLoadError = ref(false)// 父标签 span 的 classconst avatarClass = computed(() => {const { size, icon, shape } = propslet classList = ['el-avatar'] // 默认classif (size && typeof size === 'string') {classList.push(`el-avatar--${size}`) // size 是 字符串 class 就将对应的 size 放进去}if (icon) {classList.push('el-avatar--icon') // icon 的 对应类名}if (shape) {classList.push(`el-avatar--${shape}`) // 根据 shape 传入对应的 class}return classList})// 父标签 span 的 行内样式const sizeStyle = computed(() => {const { size } = props// 如果 size 是 number 就 返回 正方形垂直居中的样式return typeof size === 'number' ? {height: `${size}px`,width: `${size}px`,lineHeight: `${size}px`,} : {}})// img 标签的行内样式 objectFit 根据传入的 fit 来实现const fitStyle = computed(() => ({objectFit: props.fit,}))// 图片加载错误的触发函数 => 将 hasLoadError 置位 false ,并触发回调function handleError(e: Event) {hasLoadError.value = trueemit(ERROR_EVENT, e) // error 回调}return {hasLoadError, avatarClass, sizeStyle, handleError,fitStyle,}},
})
</script>

element-ui element-plus avatar - 分析相关推荐

  1. Element UI Element Plus之改变表格单元格颜色

    首先官网文档中有 Table 表格 组件的属性说明,只需要在el-table标签中加上:cell-style="xxx",以及实现该方法即可.Element UI框架和Elemen ...

  2. Element UI三十一Avatar头像

    简介 el-avatar:该组件用于设置图标.图片或文字来展示用户或事物信息.其属性表入下, 其子组件的slot属性取值: 基础用法 通过shape和size属性可设置头像的形状和大小: <el ...

  3. Vue + Bootstrap|Element UI——模态框被遮罩层遮盖问题解决方案

    问题描述 问题分析 1)若dialog弹出框,它的遮罩层就会被插入到body标签下(即与组件所在的最外层div同一层级) Element UI中设置了modal-append-to-body='tru ...

  4. element走马灯自动_vue Element UI走马灯组件重写

    1.element ui走马灯组件 -- carousel 分析一波源代码: carousel/src/main.vue 文件为 el-carousel文件主要功能 carousel/src/item ...

  5. element走马灯自动_[转]vue Element UI走马灯组件重写

    1.element ui走马灯组件 -- carousel 分析一波源代码: carousel/src/main.vue 文件为 el-carousel文件主要功能 carousel/src/item ...

  6. 使用element ui实现上传图片

    项目场景: 例如:上传多张,单张图片 问题描述 element ui 上传图片简单 原因分析: 自己使用自己写的方法,耗费时间长,并且功能有错 解决方案: el-upload(:action=&quo ...

  7. 网站快速成型工具-Element UI

    Element UI Element UI 1 什么是Element UI???? 2 搭建环境 2.1 创建vue项目 2.2 安装 element-ui组件 2.3 Element UI 引入 3 ...

  8. element UI的带输入建议el-autocomplete总结(详细,全)

    Table of Contents 引用el-autocomplete 触发带输入建议的两种方式 转成输入建议回调的数据结构 增加回车触发事件 解决回车后建议输入框没消失的bug vue+elemen ...

  9. vue组件库介绍以及组件库Element UI 的使用

    组件库 前言 这篇文章介绍vue组件库! 介绍什么是组件库以及Element UI组件库的使用! 看完不会你打我.哈哈哈,开玩笑的,不多说,上刺刀!! 1. 什么是 vue 组件库 在实际开发中,前端 ...

  10. Vue UI组件库(Element UI库)

    1 移动端常用 UI 组件库 1. Vant Vant 4 - 轻量.可定制的移动端组件库 (vant-ui.github.io)  2. Cube UI cube-ui Document (didi ...

最新文章

  1. 设置CodeRush Xpress的线条颜色
  2. leetcode算法题--不同的二叉搜索树 II
  3. IOS开发之GCD的基本知识
  4. sql server中对xml进行操作
  5. 上海市新能源汽车数据平台引入阿里云Lindorm数据库,成本下降20%
  6. 如何实现ABB机器人与老式焊机的连接控制
  7. 用 JavaScript 操作字符串
  8. C#实现实时监控文件目录下的变化
  9. WebView无法放大缩小解决方案
  10. Java vbnullstring_VB中Null、Empty、Nothing及vbNullString的区别
  11. 237.删除链表中的节点
  12. github octotree工具 gitee
  13. Guitar Pro 的木吉他音色改成电吉他音色的方法
  14. omv安装mysql插件_Openmediavault第三方插件安装教程
  15. 微信开发总结1——关于微信企业号API,Auth验证
  16. 哔哩哔哩 声音太小,怎么调大?
  17. JustSoSo复现
  18. 大数据时代,数据实时同步解决方案的思考—最全的数据同步总结
  19. Unity简单使用Job System
  20. python短网址转换

热门文章

  1. [PS实用技巧]1px圆角表格制作教程
  2. 有什么微软各种服务器,除了Windows操作系统 微软还有什么?
  3. 利用Python对超市进行数据分析
  4. 装linux系统能办公吗,Linux转正日常办公电脑到底行不行
  5. 2000万人口的大北京,上下班原来是这样的 (附超炫蝌蚪图)
  6. 培养孩子成就“万能”家长
  7. 郑州数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏
  8. redhat linux vim文本编辑工具的笔记
  9. Java poi给word添加水印,字体,颜色,倾斜度等
  10. 中电金信源启小程序开发平台 赋能金融+业务生态共享共建