Avatar头像
用来代表用户或事物,支持图片、图标或字符展示。
设计师专属
安装 Kitchen Sketch 插件 💎,一键填充高逼格头像和文本。
代码演示

头像有三种尺寸,两种形状可选。
TypeScript
JavaScript

import { Avatar } from 'antd';import { UserOutlined } from '@ant-design/icons';ReactDOM.render(<><div><Avatar size={64} icon={<UserOutlined />} /><Avatar size="large" icon={<UserOutlined />} /><Avatar icon={<UserOutlined />} /><Avatar size="small" icon={<UserOutlined />} /></div><div><Avatar shape="square" size={64} icon={<UserOutlined />} /><Avatar shape="square" size="large" icon={<UserOutlined />} /><Avatar shape="square" icon={<UserOutlined />} /><Avatar shape="square" size="small" icon={<UserOutlined />} /></div></>,mountNode,);

对于字符型的头像,当字符串较长时,字体大小可以根据头像宽度自动调整。也可使用 gap 来设置字符距离左右两侧边界单位像素。
TypeScript
JavaScript

import React, { useState } from 'react';import { Avatar, Button } from 'antd';const UserList = ['U', 'Lucy', 'Tom', 'Edward'];const ColorList = ['#f56a00', '#7265e6', '#ffbf00', '#00a2ae'];const GapList = [4, 3, 2, 1];const Autoset: React.FC = () => {const [user, setUser] = useState(UserList[0]);const [color, setColor] = useState(ColorList[0]);const [gap, setGap] = useState(GapList[0]);const changeUser = () => {const index = UserList.indexOf(user);setUser(index < UserList.length - 1 ? UserList[index + 1] : UserList[0]);setColor(index < ColorList.length - 1 ? ColorList[index + 1] : ColorList[0]);};const changeGap = () => {const index = GapList.indexOf(gap);setGap(index < GapList.length - 1 ? GapList[index + 1] : GapList[0]);};return (<><Avatar style={{ backgroundColor: color, verticalAlign: 'middle' }} size="large" gap={gap}>{user}</Avatar><Buttonsize="small"style={{ margin: '0 16px', verticalAlign: 'middle' }}onClick={changeUser}>ChangeUser</Button><Button size="small" style={{ verticalAlign: 'middle' }} onClick={changeGap}>changeGap</Button></>);};ReactDOM.render(<Autoset />, mountNode);

头像组合展现。
TypeScript
JavaScript

import { Avatar, Divider, Tooltip } from 'antd';import { UserOutlined, AntDesignOutlined } from '@ant-design/icons';const Demo = () => (<><Avatar.Group><Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /><Avatar style={{ backgroundColor: '#f56a00' }}>K</Avatar><Tooltip title="Ant User" placement="top"><Avatar style={{ backgroundColor: '#87d068' }} icon={<UserOutlined />} /></Tooltip><Avatar style={{ backgroundColor: '#1890ff' }} icon={<AntDesignOutlined />} /></Avatar.Group><Divider /><Avatar.Group maxCount={2} maxStyle={{ color: '#f56a00', backgroundColor: '#fde3cf' }}><Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /><Avatar style={{ backgroundColor: '#f56a00' }}>K</Avatar><Tooltip title="Ant User" placement="top"><Avatar style={{ backgroundColor: '#87d068' }} icon={<UserOutlined />} /></Tooltip><Avatar style={{ backgroundColor: '#1890ff' }} icon={<AntDesignOutlined />} /></Avatar.Group><Divider /><Avatar.GroupmaxCount={2}size="large"maxStyle={{ color: '#f56a00', backgroundColor: '#fde3cf' }}><Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /><Avatar style={{ backgroundColor: '#f56a00' }}>K</Avatar><Tooltip title="Ant User" placement="top"><Avatar style={{ backgroundColor: '#87d068' }} icon={<UserOutlined />} /></Tooltip><Avatar style={{ backgroundColor: '#1890ff' }} icon={<AntDesignOutlined />} /></Avatar.Group></>);ReactDOM.render(<Demo />, mountNode);

支持三种类型:图片、Icon 以及字符,其中 Icon 和字符型可以自定义图标颜色及背景色。
TypeScript
JavaScript

import { Avatar, Image } from 'antd';import { UserOutlined } from '@ant-design/icons';ReactDOM.render(<><Avatar icon={<UserOutlined />} /><Avatar>U</Avatar><Avatar size={40}>USER</Avatar><Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" /><Avatarsrc={<Image src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />}/><Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>U</Avatar><Avatar style={{ backgroundColor: '#87d068' }} icon={<UserOutlined />} /></>,mountNode,);

通常用于消息提示。
TypeScript
JavaScript

import { Avatar, Badge } from 'antd';import { UserOutlined } from '@ant-design/icons';ReactDOM.render(<><span className="avatar-item"><Badge count={1}><Avatar shape="square" icon={<UserOutlined />} /></Badge></span><span><Badge dot><Avatar shape="square" icon={<UserOutlined />} /></Badge></span></>,mountNode,);
/* tile uploaded pictures */.avatar-item {margin-right: 24px;}[class*='-col-rtl'] .avatar-item {margin-right: 0;margin-left: 24px;}

头像大小可以根据屏幕大小自动调整。
TypeScript
JavaScript

import { Avatar } from 'antd';import { AntDesignOutlined } from '@ant-design/icons';ReactDOM.render(<Avatarsize={{ xs: 24, sm: 32, md: 40, lg: 64, xl: 80, xxl: 100 }}icon={<AntDesignOutlined />}/>,mountNode,);
API
Avatar
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| alt | 图像无法显示时的替代文本 | string | - | |
| gap | 字符类型距离左右两侧边界单位像素 | number | 4 | 4.3.0 |
| icon | 设置头像的自定义图标 | ReactNode | - | |
| shape | 指定头像的形状 | circle | square | circle | |
| size | 设置头像的大小 | number | large | small | default | { xs: number, sm: number, …} | default | 4.7.0 |
| src | 图片类头像的资源地址或者图片元素 | string | ReactNode | - | ReactNode: 4.8.0 |
| srcSet | 设置图片类头像响应式资源地址 | string | - | |
| draggable | 图片是否允许拖动 | boolean | ‘true’ | ‘false’ | - | |
| onError | 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为 | () => boolean | - |
Tip:你可以设置
icon或children作为图片加载失败的默认 fallback 行为,优先级为icon>children
Avatar.Group (4.5.0+)
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| maxCount | 显示的最大头像个数 | number | - | |
| maxPopoverPlacement | 多余头像气泡弹出位置 | top | bottom | top | |
| maxStyle | 多余头像样式 | CSSProperties | - | |
| size | 设置头像的大小 | number | large | small | default | { xs: number, sm: number, …} | default | 4.8.0 |
当前内容版权归 Ant Design 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Ant Design .