AvatarGroup
将多个化身堆叠在一个组中。
用法
将多个Avatar包装在一个AvatarGroup中以堆叠它们。
<template>
<UAvatarGroup>
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" />
</UAvatarGroup>
</template>Size
使用size道具更改所有头像的大小。
<template>
<UAvatarGroup size="xl">
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" loading="lazy" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" loading="lazy" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" loading="lazy" />
</UAvatarGroup>
</template>Max
使用max道具来限制头像的显示数量。剩余的头像将显示为+X头像。
+1

<template>
<UAvatarGroup :max="2">
<UAvatar src="https://github.com/benjamincanac.png" alt="Benjamin Canac" loading="lazy" />
<UAvatar src="https://github.com/HugoRCD.png" alt="Hugo Richard" loading="lazy" />
<UAvatar src="https://github.com/atinux.png" alt="Sébastien Chopin" loading="lazy" />
</UAvatarGroup>
</template>颜色:badge{label="4.8+" class="align-text-top"}
使用color道具改变所有头像的颜色。
SCHRBC
<template>
<UAvatarGroup color="primary">
<UAvatar alt="Benjamin Canac" />
<UAvatar alt="Hugo Richard" />
<UAvatar alt="Sébastien Chopin" />
</UAvatarGroup>
</template>示例
带工具提示
用Tooltip包裹每个化身,以在悬停时显示工具提示。
<template>
<UAvatarGroup>
<UTooltip text="benjamincanac">
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
/>
</UTooltip>
<UTooltip text="HugoRCD">
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
/>
</UTooltip>
<UTooltip text="atinux">
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
/>
</UTooltip>
</UAvatarGroup>
</template>
带芯片
用Chip包裹每个头像,以在头像周围显示一个芯片。
<template>
<UAvatarGroup>
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
:chip="{ inset: true, color: 'success' }"
/>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
:chip="{ inset: true, color: 'warning' }"
/>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
:chip="{ inset: true, color: 'error' }"
/>
</UAvatarGroup>
</template>
带链接
用Link包装每个头像,使其可点击。
<template>
<UAvatarGroup>
<ULink
to="https://github.com/benjamincanac"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
/>
</ULink>
<ULink
to="https://github.com/HugoRCD"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
/>
</ULink>
<ULink
to="https://github.com/atinux"
target="_blank"
class="hover:ring-primary transition"
raw
>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
/>
</ULink>
</UAvatarGroup>
</template>
带面罩
使用CSS蒙版包装头像,以自定义形状显示头像。
<template>
<UAvatarGroup :ui="{ base: 'rounded-none squircle' }">
<UAvatar
src="https://github.com/benjamincanac.png"
alt="Benjamin Canac"
loading="lazy"
class="rounded-none squircle"
/>
<UAvatar
src="https://github.com/HugoRCD.png"
alt="Hugo Richard"
loading="lazy"
class="rounded-none squircle"
/>
<UAvatar
src="https://github.com/atinux.png"
alt="Sébastien Chopin"
loading="lazy"
class="rounded-none squircle"
/>
</UAvatarGroup>
</template>
<style>
.squircle {
mask-image: url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 0C20 0 0 20 0 100s20 100 100 100 100-20 100-100S180 0 100 0Z'/%3e%3c/svg%3e");
mask-size: contain;
mask-position: center;
mask-repeat: no-repeat;
}
</style>
当使用面具时,
chip道具不能正常工作。根据面具的形状,芯片可能会被切割。API
Props
| Prop | Default | Type |
|---|---|---|
as | 'div' | anyThe element or component this component should render as. |
size | 'md' | "md" | "xs" | "sm" | "lg" | "xl" | "3xs" | "2xs" | "2xl" | "3xl" |
color | 'neutral' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral" |
max | string | numberThe maximum number of avatars to display. | |
ui | { root?: SlotClass; base?: SlotClass; } |
Slots
| Slot | Type |
|---|---|
default | {} |
Theme
app.config.ts
export default defineAppConfig({
ui: {
avatarGroup: {
slots: {
root: 'inline-flex flex-row-reverse justify-end',
base: 'relative rounded-full ring-bg first:me-0'
},
variants: {
size: {
'3xs': {
base: 'ring -me-0.5'
},
'2xs': {
base: 'ring -me-0.5'
},
xs: {
base: 'ring -me-0.5'
},
sm: {
base: 'ring-2 -me-1.5'
},
md: {
base: 'ring-2 -me-1.5'
},
lg: {
base: 'ring-2 -me-1.5'
},
xl: {
base: 'ring-3 -me-2'
},
'2xl': {
base: 'ring-3 -me-2'
},
'3xl': {
base: 'ring-3 -me-2'
}
},
color: {
primary: '',
secondary: '',
success: '',
info: '',
warning: '',
error: '',
neutral: ''
}
},
defaultVariants: {
size: 'md',
color: 'neutral'
}
}
}
})vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
avatarGroup: {
slots: {
root: 'inline-flex flex-row-reverse justify-end',
base: 'relative rounded-full ring-bg first:me-0'
},
variants: {
size: {
'3xs': {
base: 'ring -me-0.5'
},
'2xs': {
base: 'ring -me-0.5'
},
xs: {
base: 'ring -me-0.5'
},
sm: {
base: 'ring-2 -me-1.5'
},
md: {
base: 'ring-2 -me-1.5'
},
lg: {
base: 'ring-2 -me-1.5'
},
xl: {
base: 'ring-3 -me-2'
},
'2xl': {
base: 'ring-3 -me-2'
},
'3xl': {
base: 'ring-3 -me-2'
}
},
color: {
primary: '',
secondary: '',
success: '',
info: '',
warning: '',
error: '',
neutral: ''
}
},
defaultVariants: {
size: 'md',
color: 'neutral'
}
}
}
})
]
})Changelog
No recent changes