Skip to content

Avatar 头像

新粗野主义风格的头像组件,用于显示用户头像图片,支持回退显示。包含 AvatarAvatarImageAvatarFallback 三个子组件,支持多种变体、尺寸、形状和状态指示。

预览

Preview

尺寸

默认特大

形状

方形圆角

带图片

用户用户

变体

状态

安装

pnpm dlx brutx-vue@latest add avatar

用法

vue
<script setup>
import { Avatar, AvatarImage, AvatarFallback } from 'brutx-ui-vue'
</script>

<template>
    <Avatar size="default" shape="square">
        <AvatarImage src="/avatar.jpg" alt="User avatar" />
        <AvatarFallback>JD</AvatarFallback>
    </Avatar>
</template>

回退行为

当图片加载失败时,AvatarFallback 会自动显示:

vue
<script setup>
import { Avatar, AvatarImage, AvatarFallback } from 'brutx-ui-vue'
</script>

<template>
    <Avatar>
        <AvatarImage src="/broken-url.jpg" alt="User" />
        <AvatarFallback>JD</AvatarFallback>
    </Avatar>
</template>

状态指示

在头像右下角渲染状态小圆点(w-3 h-3 rounded-full border-3 border-brutal-bg)。status="none"(默认)时不渲染。

状态颜色说明
onlinebg-brutal-success在线(绿色)
offlinebg-brutal-muted离线(灰色)
busybg-brutal-destructive忙碌(红色)
none不渲染(默认)
vue
<script setup>
import { Avatar, AvatarFallback } from 'brutx-ui-vue'
</script>

<template>
    <div class="flex items-center gap-4">
        <Avatar size="lg" status="online">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
        <Avatar size="lg" status="offline">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
        <Avatar size="lg" status="busy">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
    </div>
</template>

变体

控制头像根容器与 AvatarFallback 的背景色,通过 provide/inject 下发给子组件。

变体根容器背景回退背景
defaultbg-brutal-mutedbg-brutal-muted
primarybg-brutal-primary/20bg-brutal-primary
secondarybg-brutal-secondary/20bg-brutal-secondary
accentbg-brutal-accent/20bg-brutal-accent
vue
<script setup>
import { Avatar, AvatarFallback } from 'brutx-ui-vue'
</script>

<template>
    <div class="flex items-center gap-4">
        <Avatar size="lg" variant="default">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
        <Avatar size="lg" variant="primary">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
        <Avatar size="lg" variant="secondary">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
        <Avatar size="lg" variant="accent">
            <AvatarFallback>JD</AvatarFallback>
        </Avatar>
    </div>
</template>

尺寸

尺寸大小
smh-8 w-8(32px)
defaulth-10 w-10(40px)
lgh-14 w-14(56px)
xlh-20 w-20(80px)

形状

形状说明
square无圆角(默认)
rounded使用 --brutal-radius 令牌
vue
<script setup>
import { Avatar, AvatarFallback } from 'brutx-ui-vue'
</script>

<template>
    <Avatar size="lg" shape="rounded">
        <AvatarFallback>JD</AvatarFallback>
    </Avatar>
</template>

子组件

组件说明
Avatar根容器,提供尺寸、形状、变体和状态上下文
AvatarImage头像图片,加载失败时自动隐藏
AvatarFallback回退内容,图片不可见时自动显示

Props

Avatar

属性类型默认值说明
variant'default' | 'primary' | 'secondary' | 'accent''default'颜色变体,下发给 AvatarFallback
size'sm' | 'default' | 'lg' | 'xl''default'尺寸
shape'square' | 'rounded''square'形状
status'online' | 'offline' | 'busy' | 'none''none'右下角状态圆点
classstring附加类名

AvatarImage

属性类型默认值说明
srcstring图片地址
altstring替代文本
classstring附加类名

AvatarFallback

属性类型默认值说明
classstring附加类名

插槽

Avatar 插槽

插槽作用域说明
default默认插槽,用于放置 AvatarImageAvatarFallback 子组件

AvatarFallback 插槽

插槽作用域说明
default默认插槽,用于放置回退内容(文字或图标)

可访问性

  • ARIA 属性:状态圆点使用 role="status"aria-label 属性,支持屏幕阅读器
  • 国际化:状态标签通过 i18n 提供本地化文本:
    • online → "在线"
    • offline → "离线"
    • busy → "忙碌"

蛮力铸就。