当前位置:首页 > VUE

vue实现头像组件

2026-01-17 08:43:52VUE

vue实现头像组件

Vue 头像组件实现

基础实现

创建一个可复用的头像组件,支持图片链接或文字缩写显示:

vue实现头像组件

<template>
  <div class="avatar" :style="avatarStyle">
    <img v-if="src" :src="src" :alt="alt" @error="handleError">
    <span v-else class="avatar-text">{{ text }}</span>
  </div>
</template>

<script>
export default {
  props: {
    src: {
      type: String,
      default: ''
    },
    alt: {
      type: String,
      default: ''
    },
    size: {
      type: Number,
      default: 40
    },
    text: {
      type: String,
      default: ''
    },
    bgColor: {
      type: String,
      default: '#ccc'
    },
    textColor: {
      type: String,
      default: '#fff'
    }
  },
  data() {
    return {
      imageError: false
    }
  },
  computed: {
    avatarStyle() {
      return {
        width: `${this.size}px`,
        height: `${this.size}px`,
        lineHeight: `${this.size}px`,
        backgroundColor: this.bgColor,
        color: this.textColor
      }
    }
  },
  methods: {
    handleError() {
      this.imageError = true
    }
  }
}
</script>

<style scoped>
.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  overflow: hidden;
  font-weight: bold;
  text-transform: uppercase;
}

.avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.avatar-text {
  font-size: calc(40% + 1vw);
}
</style>

高级功能扩展

添加更多功能如形状选择、状态指示和悬停效果:

<template>
  <div 
    class="avatar-wrapper"
    :class="[shape, { 'has-status': status }]"
    :style="{ '--status-color': statusColor }"
  >
    <div class="avatar" :style="avatarStyle">
      <img v-if="src && !imageError" :src="src" :alt="alt" @error="handleError">
      <span v-else class="avatar-text">{{ text }}</span>
    </div>
    <div v-if="status" class="status-indicator"></div>
  </div>
</template>

<script>
export default {
  props: {
    shape: {
      type: String,
      default: 'circle',
      validator: value => ['circle', 'square', 'rounded'].includes(value)
    },
    status: {
      type: Boolean,
      default: false
    },
    statusColor: {
      type: String,
      default: '#4CAF50'
    },
    // 保留基础props
  },
  // 保留基础data, computed, methods
}
</script>

<style scoped>
.avatar-wrapper {
  position: relative;
  display: inline-block;
}

.avatar-wrapper.circle .avatar {
  border-radius: 50%;
}

.avatar-wrapper.square .avatar {
  border-radius: 0;
}

.avatar-wrapper.rounded .avatar {
  border-radius: 20%;
}

.status-indicator {
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background-color: var(--status-color);
  bottom: 0;
  right: 0;
  border: 2px solid white;
}

.avatar:hover {
  opacity: 0.9;
  transform: scale(1.05);
  transition: all 0.3s ease;
}
</style>

使用示例

<template>
  <div>
    <!-- 基础用法 -->
    <Avatar src="https://example.com/avatar.jpg" alt="用户头像" />

    <!-- 文字缩写 -->
    <Avatar text="VU" size="60" bgColor="#2196F3" />

    <!-- 高级用法 -->
    <Avatar 
      src="https://example.com/avatar.jpg" 
      shape="rounded" 
      size="80" 
      status 
      statusColor="#FF5722"
    />
  </div>
</template>

<script>
import Avatar from './components/Avatar.vue'

export default {
  components: {
    Avatar
  }
}
</script>

功能总结

  • 支持图片显示和加载失败处理
  • 支持文字缩写显示
  • 可自定义大小、背景色、文字颜色
  • 可选圆形、方形或圆角形状
  • 可添加状态指示器
  • 支持悬停动画效果
  • 完全响应式设计

组件可根据实际需求进一步扩展,如添加上传功能、多尺寸响应式处理或与后端API集成等功能。

标签: 组件头像
分享给朋友:

相关文章

uniapp倒计时组件

uniapp倒计时组件

uniapp倒计时组件实现方法 使用内置组件实现 uniapp提供了<countdown>组件用于倒计时功能,支持自定义格式和样式。示例代码如下: <countdown :t…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

实现拖拽组件嵌套的核心思路 Vue中实现拖拽组件嵌套需要结合拖拽库(如vuedraggable)和组件递归渲染。核心在于动态管理嵌套数据结构,并通过事件传递实现层级更新。 安装必要依赖 推荐使用vu…

Vue组件实现方法

Vue组件实现方法

Vue组件的基本实现 Vue组件是Vue.js的核心概念之一,允许将UI拆分为独立可复用的代码片段。组件的实现方式有多种,以下是常见的几种方法。 单文件组件(SFC) 单文件组件以.vue为后缀,将…

vue实现组件通信

vue实现组件通信

Vue 组件通信方法 Vue 提供了多种方式实现组件间的通信,适用于不同场景。以下是常见的方法: Props 和 Events 父组件通过 props 向子组件传递数据,子组件通过 $emit 触…

vue实现秒表组件

vue实现秒表组件

实现秒表组件的基本思路 使用Vue实现秒表组件需要管理时间状态、控制计时器的启动/暂停/重置功能,并通过计算属性动态显示格式化时间。核心逻辑包括利用setInterval更新计时数据,并通过生命周期钩…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…