概述
头像是一种轻量级组件,默认情况下内联渲染,以便在任何相邻纯文本旁边垂直居中。它们还可以用作其他组件的子组件。
<template>
<div>
<p>Using stand-alone:<p/>
<div class="mb-4">
<b-avatar></b-avatar>
<b-avatar variant="primary" text="BV"></b-avatar>
<b-avatar variant="info" src="https://placekitten.com/300/300"></b-avatar>
<b-avatar variant="success" icon="people-fill"></b-avatar>
</div>
<p>Using in components (list group) example:<p/>
<b-list-group style="max-width: 300px;">
<b-list-group-item class="d-flex align-items-center">
<b-avatar class="mr-3"></b-avatar>
<span class="mr-auto">J. Circlehead</span>
<b-badge>5</b-badge>
</b-list-group-item>
<b-list-group-item class="d-flex align-items-center">
<b-avatar variant="primary" text="BV" class="mr-3"></b-avatar>
<span class="mr-auto">BootstrapVue</span>
<b-badge>12</b-badge>
</b-list-group-item>
<b-list-group-item class="d-flex align-items-center">
<b-avatar variant="info" src="https://placekitten.com/300/300" class="mr-3"></b-avatar>
<span class="mr-auto">Super Kitty</span>
<b-badge>9</b-badge>
</b-list-group-item>
<b-list-group-item class="d-flex align-items-center">
<b-avatar variant="success" icon="people-fill" class="mr-3"></b-avatar>
<span class="mr-auto">ACME group</span>
<b-badge>7</b-badge>
</b-list-group-item>
</b-list-group>
</div>
</template>
头像类型
头像内容可以是图像、图标或简短文本字符串。当未指定其他内容时,头像内容默认为 'person-fill' 图标。
您还可以通过默认插槽提供自定义内容,尽管您可能需要对内容应用额外的样式。
图像内容
使用 src 属性指定用作头像内容的图像 URL。图像的纵横比应为 1:1(即宽度和高度应相等),否则会发生图像纵横比失真。图像将按比例放大或缩小以适应头像的边界框。
<template>
<div class="mb-2">
<b-avatar src="https://placekitten.com/300/300"></b-avatar>
<b-avatar src="https://placekitten.com/300/300" size="6rem"></b-avatar>
</div>
</template>
注意
- 使用模块打包器和项目相对图像 URL 时,请参阅 组件 img src 解析 参考部分以获取更多详细信息。
src 属性优先于 icon 和 text 属性。 - 2.11.0+ 如果图像加载失败,头像将回退到
icon 或 text 属性的值。如果未提供 icon 或 text 属性,则将显示默认头像图标。此外,当图像加载失败时,将触发 img-error 事件。 - 变体颜色在使用通常不可见的图像时,除非图像加载失败。当图像头像也是 可操作头像 时,变体会影响焦点样式。
图标内容
通过 icon 属性轻松使用 BootstrapVue 的图标 作为头像内容。该属性应设置为有效的图标名称。图标将相对于 size 属性 进行缩放。
<template>
<div class="mb-2">
<b-avatar icon="people-fill"></b-avatar>
<b-avatar icon="star-fill"></b-avatar>
<b-avatar icon="music-note"></b-avatar>
<b-avatar icon="star-fill" size="4em"></b-avatar>
</div>
</template>
注意
- 提供 BootstrapVue 图标名称时,必须确保已注册相应的图标组件(在组件/页面本地或全局),如果不使用完整的
BootstrapVueIcons 插件。 icon 属性优先于 text 属性。 - 如果未提供
text、src 或 icon 属性并且 默认插槽 没有内容,则将使用 person-fill 图标。
文本内容
你可以通过 text 属性指定一个短字符串作为头像的内容。该字符串应简短(1 到 3 个字符),并且将通过 CSS 转换为全大写。字体大小将根据 size 属性设置进行缩放。
<template>
<div class="mb-2">
<b-avatar text="BV"></b-avatar>
<b-avatar text="a"></b-avatar>
<b-avatar text="Foo"></b-avatar>
<b-avatar text="BV" size="4rem"></b-avatar>
</div>
</template>
自定义内容
使用 default 插槽在头像中呈现自定义内容,以便更精细地控制其外观,或使用自定义图标或 SVG,例如:
<b-avatar><custom-icon></custom-icon></b-avatar>
多行文本示例
<template>
<div class="mb-2">
<b-avatar size="4em">Hello<br>World</b-avatar>
<b-avatar size="4em">你好<br>世界</b-avatar>
</div>
</template>
注意
- 默认插槽优先于
text、src 和 icon 属性。 - 默认插槽内容将被包装在
<span> 元素中,以确保正确居中。 - 你可能需要对自定义内容应用额外的样式,以补偿 头像组件的形状。
样式
变体
使用 variant 属性指定 Bootstrap 主题变体颜色之一。默认变体是 secondary。
<template>
<div>
<b-avatar variant="secondary"></b-avatar>
<b-avatar variant="primary"></b-avatar>
<b-avatar variant="dark"></b-avatar>
<b-avatar variant="light"></b-avatar>
<b-avatar variant="success"></b-avatar>
<b-avatar variant="danger"></b-avatar>
<b-avatar variant="warning"></b-avatar>
<b-avatar variant="info"></b-avatar>
</div>
</template>
如果你已通过 SASS 主题变量定义了其他自定义变体,则还可以使用这些自定义变体。
尺寸
默认情况下,头像大小为 2.5em(相对于当前字体大小)。你可以通过更改当前字体大小来更改头像的大小,或使用属性 size 指定明确的大小。大小 sm、md 和 lg 的默认值分别为 1.5em、2.5em 和 3.5em。数字将转换为像素值。任何其他值必须包含单位(例如 px、em 或 rem)。
<template>
<div>
<b-avatar></b-avatar>
<b-avatar size="sm"></b-avatar>
<b-avatar size="lg"></b-avatar>
<b-avatar :size="24"></b-avatar>
<b-avatar size="3em"></b-avatar>
<b-avatar size="72px"></b-avatar>
</div>
</template>
注意:头像始终以 1:1 的纵横比呈现。
正方形
更喜欢正方形头像?只需将 square 属性设置为 true。
<template>
<div>
<b-avatar square></b-avatar>
</div>
</template>
圆角
<b-avatar> 呈现为圆形边框半径。你可以通过将 rounded 属性设置为 true、'sm'、'lg'、'top'、'left'、'right' 或 'bottom' 之一的值来更改圆角。当设置为 true(或空字符串 '')时,它使用中等圆角的 Bootstrap 默认值。
<template>
<div>
<b-avatar rounded="sm"></b-avatar>
<b-avatar rounded></b-avatar>
<b-avatar rounded="lg"></b-avatar>
<b-avatar rounded="top"></b-avatar>
<b-avatar rounded="left"></b-avatar>
<b-avatar rounded="right"></b-avatar>
<b-avatar rounded="bottom"></b-avatar>
</div>
</template>
注意
square 属性优先于 rounded 属性。 - 或者,除了
square 属性,你还可以将 rounded 属性设置为字符串 '0' 以实现正方形头像。
对齐
默认情况下,<b-avatar> 将与其相邻的内容垂直居中。在某些情况下,你可能需要更改对齐方式,例如确保仅文本头像将其文本与相邻文本对齐。只需在组件上设置一个 垂直对齐实用工具 类,例如 <b-avatar class="align-baseline" ...> 或 <b-avatar class="align-top" ...> 等。
可操作头像
轻松创建对点击做出响应的头像,或在点击时更改 URL/路由的头像。可操作头像将出现在文档选项卡序列中,并且对于屏幕阅读器和仅键盘用户都可以访问。
当图像头像可操作时,在悬停时对图像采用基本的缩放变换。
想要触发模态框打开或触发操作?设置 button 属性来指示 <b-avatar> 作为 <button> 元素渲染。作为按钮渲染时,组件会在每次点击时发出 click 事件。
<template>
<b-list-group>
<b-list-group-item>
<b-avatar button @click="onClick" variant="primary" text="FF" class="align-baseline"></b-avatar>
Button Text Avatar
</b-list-group-item>
<b-list-group-item>
<b-avatar button @click="onClick" src="https://placekitten.com/300/300"></b-avatar>
Button Image Avatar
</b-list-group-item>
<b-list-group-item>
<b-avatar button @click="onClick" icon="star-fill" class="align-center"></b-avatar>
Button Icon Avatar
</b-list-group-item>
</b-list-group>
</template>
<script>
export default {
methods: {
onClick() {
this.$bvModal.msgBoxOk('User name: Fred Flintstone', {
title: 'User Info',
size: 'sm',
buttonSize: 'sm',
okVariant: 'success',
headerClass: 'p-2 border-bottom-0',
footerClass: 'p-2 border-top-0'
})
}
}
}
</script>
属性 button-type 可用于控制要渲染的按钮类型。支持的值为 'button'(默认值)、'submit' 或 'reset'。
链接
想要一个头像作为链接或路由器链接?只需分别设置 href 或 to 属性即可。 to 属性可以是字符串路径或 Location 对象。 to 属性要求安装 Vue 路由器(或等效项)。
<template>
<b-list-group>
<b-list-group-item>
<b-avatar href="#foo" variant="primary" text="FF" class="align-baseline"></b-avatar>
Link Text Avatar
</b-list-group-item>
<b-list-group-item>
<b-avatar href="#bar" src="https://placekitten.com/300/300"></b-avatar>
Link Image Avatar
</b-list-group-item>
<b-list-group-item>
<b-avatar href="#baz" icon="star-fill" class="align-center"></b-avatar>
Link Icon Avatar
</b-list-group-item>
</b-list-group>
</template>
注意
button 属性优先于 href 和 to 属性。 - 有关
<router-link> 兼容属性的其他详细信息,请参阅 路由器支持参考部分。
徽章头像
2.12.0+
通过 badge 属性或 'badge' 插槽轻松地向头像添加徽章,并且可以通过 badge-variant 属性设置徽章变体。徽章会随着头像大小缩放。
<template>
<div>
<b-avatar badge></b-avatar>
<b-avatar badge badge-variant="danger" src="https://placekitten.com/300/300"></b-avatar>
<b-avatar badge badge-variant="warning" icon="people-fill"></b-avatar>
<b-avatar badge badge-variant="success" src="https://placekitten.com/300/300"></b-avatar>
<b-avatar badge badge-variant="dark" text="BV"></b-avatar>
<b-avatar square badge badge-variant="dark" text="BV"></b-avatar>
</div>
</template>
徽章内容
通过向 badge 属性提供字符串或使用命名插槽 'badge' 向徽章添加文本内容。
<template>
<div>
<b-avatar badge="BV"></b-avatar>
<b-avatar badge="7" variant="primary" badge-variant="dark"></b-avatar>
<b-avatar badge-variant="info" src="https://placekitten.com/300/300">
<template #badge><b-icon icon="star-fill"></b-icon></template>
</b-avatar>
</div>
</template>
徽章定位
默认情况下,徽章出现在头像的右下角。你可以使用 badge-top 和 badge-right 布尔属性切换侧面。组合这两个属性可将徽章移动到头像的右上角。
<template>
<div>
<b-avatar badge></b-avatar>
<b-avatar badge badge-left></b-avatar>
<b-avatar badge badge-top></b-avatar>
<b-avatar badge badge-left badge-top></b-avatar>
</div>
</template>
使用 badge-offset 属性来控制徽章的偏移量。 badge-offset 必须是一个有效的 CSS 长度字符串(即 '2px'、'-2px'、'0.5em' 等)。正值会向内移动徽章,而负值会向外移动徽章。
<template>
<div>
<b-avatar badge></b-avatar>
<b-avatar badge badge-offset="-0.5em"></b-avatar>
<b-avatar badge badge-offset="-2px"></b-avatar>
<b-avatar badge badge-offset="2px"></b-avatar>
<b-avatar badge badge-top></b-avatar>
<b-avatar badge badge-top badge-offset="-0.5em"></b-avatar>
<b-avatar badge badge-top badge-offset="-2px"></b-avatar>
<b-avatar badge badge-top badge-offset="2px"></b-avatar>
</div>
</template>
头像组
v2.14.0+
将多个头像组合在一起,方法是将它们包装在 <b-avatar-group> 组件中
<template>
<div>
<b-avatar-group size="60px">
<b-avatar></b-avatar>
<b-avatar text="BV" variant="primary"></b-avatar>
<b-avatar src="https://placekitten.com/300/300" variant="info"></b-avatar>
<b-avatar text="OK" variant="danger"></b-avatar>
<b-avatar variant="warning"></b-avatar>
<b-avatar src="https://placekitten.com/320/320" variant="dark"></b-avatar>
<b-avatar icon="music-note" variant="success"></b-avatar>
</b-avatar-group>
</div>
</template>
注意
variant、square 和 rounded 属性在 <b-avatar-group> 上将优先于各个头像上的相应属性。
组大小
要调整头像大小,请在 <b-avatar-group> 上使用属性 size。 size 属性接受与 <b-avatar> 上的 size 属性相同类型的数值。请注意,当将 size 属性放在 <b-avatar-group> 中时,单个头像上的 size 属性将被忽略。
<template>
<div>
<b-avatar-group size="5rem">
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
</b-avatar-group>
</div>
</template>
组变体
使用 variant 属性为 <b-avatar-group> 中的所有子头像着色。请注意,当设置 variant 属性时,它将覆盖各个头像上指定的 variant。
<template>
<div>
<b-avatar-group variant="success">
<b-avatar></b-avatar>
<b-avatar variant="info"></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
</b-avatar-group>
</div>
</template>
组舍入
与 variant 属性类似,<b-avatar-group> 属性 square 和 rounded 优先于各个子头像上的相应属性。
<template>
<div>
<b-avatar-group rounded="lg">
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
</b-avatar-group>
</div>
</template>
组重叠
默认情况下,<b-avatar-group> 中的子头像将重叠 0.3 倍(相对于头像的大小)。你可以通过将 overlap 属性设置为 0 到 1 之间的值来控制重叠量,其中 0 表示不重叠,1 表示 100% 重叠。
<template>
<div>
<b-avatar-group overlap="0.65">
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
<b-avatar></b-avatar>
</b-avatar-group>
</div>
</template>
无障碍
使用 aria-label 属性为你的头像提供一个无障碍的、屏幕阅读器友好的标签。如果你有一个徽章,建议在你的 aria-label 中添加有关徽章目的或内容的信息(例如 '3 条消息'、'在线' 等)。
虽然 click 事件会发出,无论 button、href 还是 to 属性是否设置,但强烈建议在点击事件应该触发操作(或在更改路由或更改 URL 时使用 to 或 href 属性)时使用 button 属性,以实现无障碍性。
实现说明
头像基于 <b-badge> 和 <b-button> 组件,因此依赖于 Bootstrap 的 badge-* 和 btn-* 变体类,以及 rounded-* 实用程序类。
<b-avatar> 还需要 BootstrapVue 的自定义 CSS 才能正确设置样式。