尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

ng-zorro-antd Avatar 头像组件三种类型实战:图片、Icon 与字符头像的自定义指南

发布时间:2026/9/25 2:36:30

资讯中心
01
ARTICLE

ng-zorro-antd Avatar 头像组件三种类型实战:图片、Icon 与字符头像的自定义指南

ng-zorro-antd Avatar 头像组件三种类型实战:图片、Icon 与字符头像的自定义指南
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载nz-avatar头像组件用于代表用户或事物是数据展示场景中的高频基础组件。在 ng-zorro-antd 中头像支持**图片Image、图标Icon与字符Letter**三种展示类型其中 Icon 与字符型头像可以自定义图标颜色与背景色。阅读本文后你将掌握三种类型的完整用法、渲染优先级与加载失败的 fallback 机制并能直接复制可运行的示例代码到自己的 Angular 项目中。三种类型的核心概念根据 type.md 的说明头像组件支持三种类型类型说明对应属性图片Image以nzSrc指定的图片资源地址渲染img元素nzSrc图标Icon以nzIcon指定的图标类型渲染nz-iconnzIcon字符Letter以nzText指定的文本内容渲染字符如用户姓名首字母nzText其中Icon 类型和字符类型都可以通过内联style自定义图标颜色及背景色图片类型则可通过nzSrcSet、nzAlt、nzLoading、nzFetchPriority等属性做更细粒度的控制。完整示例一行代码展示六种头像形态官方演示位于 type.ts覆盖了三种类型的典型用法import { Component } from angular/core; import { NzAvatarModule } from ng-zorro-antd/avatar; Component({ selector: nz-demo-avatar-type, imports: [NzAvatarModule], template: nz-avatar nzIconuser / nz-avatar nzTextU / nz-avatar nzTextUSER / nz-avatar nzIconuser nzSrc//zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png / nz-avatar nzTextU stylecolor:#f56a00; background-color:#fde3cf; / nz-avatar nzIconuser stylebackground-color:#87d068; / , styles: nz-avatar { margin-top: 16px; margin-inline-end: 16px; } }) export class NzDemoAvatarTypeComponent {}这段模板依次演示了nzIconuser—— 纯图标头像nzTextU—— 单字符头像nzTextUSER—— 多字符头像多字符会被自动缩放以适配容器nzIconuser nzSrc...—— 同时指定图标与图片地址此时图片优先渲染nzTextUstylecolor:#f56a00; background-color:#fde3cf;—— 自定义字符颜色与背景色nzIconuserstylebackground-color:#87d068;—— 自定义图标背景色。示例组件通过imports: [NzAvatarModule]独立引入头像模块无需在 NgModule 中额外声明体现了组件自身的模块化设计。渲染优先级与 fallback 机制源码级原理在 avatar.component.ts 的模板中三种类型的渲染遵循严格的优先级if (nzIcon hasIcon) { nz-icon [nzType]nzIcon / } else if (nzSrc hasSrc) { img [src]nzSrc ... (error)imgError($event) / } else if (nzText hasText) { span classant-avatar-string #textEl{{ nzText }}/span }即Icon 优先于图片、图片优先于字符。而在ngOnChangesavatar.component.ts中组件对输入属性做了归一化ngOnChanges(): void { this.hasText !this.nzSrc !!this.nzText; this.hasIcon !this.nzSrc !!this.nzIcon; this.hasSrc !!this.nzSrc; }可以看到图片nzSrc的优先级最高只要设置了nzSrchasText与hasIcon都会被强制置为false只有未提供nzSrc时nzIcon才优先生效其次才是nzText。这解释了示例中第 4 个头像nzIconuser nzSrc...为何最终显示为图片两者并存时图片胜出。nzSrcSet多分辨率资源与nzAlt替代文本会通过[attr.srcset]、[attr.alt]透传到原生img元素上见 avatar.component.ts。图片加载失败时的自动降级当图片加载失败时imgError方法avatar.component.ts会执行 fallback 逻辑imgError(event: Event): void { this.nzError.emit(event); if (!event.defaultPrevented) { this.hasSrc false; this.hasIcon false; this.hasText false; if (this.nzIcon) { this.hasIcon true; } else if (this.nzText) { this.hasText true; } this.cdr.detectChanges(); } }即图片加载失败后如果同时提供了nzIcon则降级为图标头像否则若提供了nzText则降级为字符头像而通过(nzError)事件调用event.preventDefault()可以阻止这一默认降级行为交给开发者自行处理。这一行为在 avatar.spec.ts 中有对应测试先断言getType(dl)为image手动触发 error 后断言变为icon。自定义颜色与背景色Icon 与字符型头像的自定义方式非常直观——直接通过组件的宿主元素样式注入!-- 字符同时自定义文字颜色与背景色 -- nz-avatar nzTextU stylecolor:#f56a00; background-color:#fde3cf; / !-- 图标自定义背景色图标颜色继承默认主题 -- nz-avatar nzIconuser stylebackground-color:#87d068; /原理上组件以ViewEncapsulation.None方式渲染宿主元素带ant-avatar类avatar.component.ts并依据输入动态切换ant-avatar-icon、ant-avatar-image等语义类因此开发者传入的style会直接作用于头像外层容器文字与图标样式随之生效。字符颜色即color属性背景色即background-color属性两者可独立设置。字符自动缩放nzGap 的底层作用字符头像的文本不会直接溢出afterEveryRender钩子会调用calcStringSize()avatar.component.ts计算缩放比例private calcStringSize(): void { ... const childrenWidth textEl.offsetWidth; const avatarWidth this.el.getBoundingClientRect?.().width ?? 0; const offset this.nzGap * 2 avatarWidth ? this.nzGap * 2 : 8; const scale avatarWidth - offset childrenWidth ? (avatarWidth - offset) / childrenWidth : 1; textEl.style.transform scale(${scale}) translateX(-50%); ... }当文本宽度超过「头像宽度 − 两倍nzGap」时文本会被等比缩放。因此nzGap字符距离左右两侧边界的像素数默认4不仅决定间距还直接影响文本的缩放临界点对于「USER」这类多字符头像该机制保证文本始终完整显示在圆形容器内。样式细节见 style/index.less。nz-avatar 完整 API 参考结合 index.zh-CN.md 与组件源码nz-avatar支持以下输入属性参数说明类型默认值[nzIcon]设置头像的图标类型参考Iconstring-[nzShape]指定头像的形状circle \| squarecircle[nzSize]设置头像的大小large \| small \| default \| number \| { xs: number, sm: number, ... }default[nzGap]字符类型距离左右两侧边界单位像素number4[nzSrc]图片类头像的资源地址string-[nzSrcSet]设置图片类头像响应式资源地址string-[nzAlt]图像无法显示时的替代文本string-[nzText]文本类头像string-[nzLoading]设置图片类头像img元素原生loading属性eager \| lazyeager[nzFetchPriority]设置图片类头像img元素原生fetchpriority属性high \| low \| autoauto(nzError)图片加载失败的事件调用preventDefault会阻止默认 fallback 行为EventEmitterEvent-几点说明nzShape、nzSize、nzGap支持全局配置对应NzConfigKey中的avatar见 avatar.component.ts可在应用入口统一设置nzSize传入数字或响应式对象{ xs, sm, md, ... }时组件内部借助NzBreakpointService订阅断点变化动态计算尺寸并将数值换算为 CSS 像素customSize字体大小自动取尺寸的一半customFontSize见 avatar.component.ts若需要以编程方式批量配置头像可复用 types.ts 中导出的NzAvatarProps接口含shape、size、gap、src、srcSet、alt、icon、text、error字段。组合场景分组头像三种类型同样适用于分组场景。nz-avatar-group实现见 avatar-group.component.ts只是带ant-avatar-group类的简单内容容器内部可混用任意类型的nz-avatarnz-avatar-group nz-avatar nzIconuser / nz-avatar nzTextU / nz-avatar nzSrchttps://example.com/avatar.png / /nz-avatar-group分组后头像之间的间距、堆叠与遮罩样式由 style/group.less 提供适合团队成员列表、多用户标签等展示场景。小结头像的三种类型——图片、Icon、字符——覆盖了「用户真实头像 / 占位图标 / 姓名缩写」三类最常见的业务诉求。使用时牢记三点同时设置nzSrc与nzIcon时图片优先Icon 与字符型可通过宿主style直接定制颜色与背景色图片加载失败时组件会按「图标 → 字符」顺序自动降级且可通过(nzError)的preventDefault()接管处理。官方演示代码与测试type.ts、avatar.spec.ts均可直接作为实现与验证依据。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐Ant Design Avatar 头像的三种渲染类型图片、Icon 与字符的完整使用指南Ant Design Avatar 头像的三种渲染类型图片、Icon 与字符的完整使用指南 本文基于 ant design 仓库中 components/av前端UI组件设计系统Shoelace 头像组件sl-avatar完全指南图片、首字母、图标与头像组实战Shoelace 头像组件sl avatar完全指南图片、首字母、图标与头像组实战 sl avatar 是 Shoelace Web ComponentsUI组件前端ElementVue 2.0Avatar 头像组件完全指南图片、图标与字符三种形态的源码级解析ElementVue 2.0Avatar 头像组件完全指南图片、图标与字符三种形态的源码级解析 el avatar 是 Element UI 中用于展示用前端UI组件设计系统上一篇Talos 项目常见问题解决方案下一篇【亲测免费】 SciHubEVA 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。