vue3仿飞书头像,根据不同名称生成不同的头像背景色

效果展示:
传递三个参数:
  • name:要显示的名称;
  • size:头像的大小;
  • cutNum:分割当前名称的最后几位数;
代码如下:
html 复制代码
<template>
	<div
		:style="{
			color: '#fff',
			borderRadius: '50%',
			width: size + 'px',
			height: size + 'px',
			display: 'block',
			textAlign: 'center',
			lineHeight: size + 'px',
			fontSize: size * 0.4 + 'px',
			background: color(name)
		}"
	>
		{{ name.slice(-cutNum) }}
	</div>
</template>

<script lang="ts" setup>
defineProps({
	name: {
		type: String,
		default: ""
	},
	size: {
		type: Number,
		default: 16
	},
	cutNum: {
		type: Number,
		default: 1
	}
});

const color = (name: string) => {
	if (name) {
		let num = "";
		for (let i = 0; i < name.length; i++) {
			num += name[i].charCodeAt(0).toString();
		}
		const r = Math.min(100 + (parseInt(num.slice(0, 2), 10) % 55), 255);
		const g = Math.min(100 + (parseInt(num.slice(2, 4), 10) % 55), 255);
		const b = Math.min(100 + (parseInt(num.slice(4, 6), 10) % 55), 255);
		return `rgb(${r}, ${g}, ${b})`;
	} else {
		return "rgb(125, 125, 125)";
	}
};
</script>
使用代码如下:
复制代码
<AuthorImage name="铁甲小宝" :size="74" :cut-num="2"></AuthorImage>
相关推荐
Teable任意门互动17 小时前
项目管理数字化落地案例|任意门互动科技(Teable 官方合作伙伴)以多维表格搭建项目管理平台
人工智能·开源·软件工程·飞书·开源软件·数据库开发
Rock Chin6971 天前
把 Claude Code 和 Codex 接进微信、飞书、钉钉:LangBot Runner 插件实战
elasticsearch·钉钉·飞书
goehou1 天前
Agent 接飞书实战:回调验签、事件去重与异步回复(附踩坑)
实战·飞书·agent·mcp·im集成
Java川4 天前
飞书获取APPID及APPSecret操作步骤
飞书
LaughingZhu6 天前
任务在飞书创建,开发在 Orca 继续:我把飞书项目接到了 Linear
大数据·人工智能·深度学习·神经网络·飞书
沫璃染墨6 天前
从零入门数据结构与算法(一):复杂度分析——从算法效率到时间与空间复杂度
c语言·开发语言·数据结构·笔记·算法·飞书
wewowilling6 天前
流水线gitee-go部署完成后如何在飞书通知 --- 接入飞书webhook
飞书
进击的雷神10 天前
把 Claude/GPT 接进飞书、Telegram、Discord:一条命令跑起来的 OpenClaw 部署工具
gpt·飞书·openclaw
刘广睿1 个月前
影栈 vs 飞书/Notion:用通用工具搭短视频素材库,半年踩坑记
飞书·notion·短视频素材库·素材管理效率·创作工作流
13线1 个月前
为什么要合并飞书和豆包
人工智能·飞书·火山引擎·豆包