Badge 徽标

介绍

在右上角展示徽标数字或小红点。

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

  1. import { createApp } from 'vue';
  2. import { Badge } from 'vant';
  3. const app = createApp();
  4. app.use(Badge);

代码演示

基础用法

设置 content 属性后,Badge 会在子元素的右上角显示对应的徽标,也可以通过 dot 来显示小红点。

  1. <van-badge :content="5">
  2. <div class="child" />
  3. </van-badge>
  4. <van-badge :content="10">
  5. <div class="child" />
  6. </van-badge>
  7. <van-badge content="Hot">
  8. <div class="child" />
  9. </van-badge>
  10. <van-badge dot>
  11. <div class="child" />
  12. </van-badge>
  13. <style>
  14. .child {
  15. width: 40px;
  16. height: 40px;
  17. background: #f2f3f5;
  18. border-radius: 4px;
  19. }
  20. </style>

最大值

设置 max 属性后,当 content 的数值超过最大值时,会自动显示为 {max}+

  1. <van-badge :content="20" max="9">
  2. <div class="child" />
  3. </van-badge>
  4. <van-badge :content="50" max="20">
  5. <div class="child" />
  6. </van-badge>
  7. <van-badge :content="200" max="99">
  8. <div class="child" />
  9. </van-badge>

自定义颜色

通过 color 属性来设置徽标的颜色。

  1. <van-badge :content="5" color="#1989fa">
  2. <div class="child" />
  3. </van-badge>
  4. <van-badge :content="10" color="#1989fa">
  5. <div class="child" />
  6. </van-badge>
  7. <van-badge dot color="#1989fa">
  8. <div class="child" />
  9. </van-badge>

自定义徽标内容

通过 content 插槽可以自定义徽标的内容,比如插入一个图标。

  1. <van-badge>
  2. <div class="child" />
  3. <template #content>
  4. <van-icon name="success" class="badge-icon" />
  5. </template>
  6. </van-badge>
  7. <van-badge>
  8. <div class="child" />
  9. <template #content>
  10. <van-icon name="cross" class="badge-icon" />
  11. </template>
  12. </van-badge>
  13. <van-badge>
  14. <div class="child" />
  15. <template #content>
  16. <van-icon name="down" class="badge-icon" />
  17. </template>
  18. </van-badge>
  1. .badge-icon {
  2. display: block;
  3. font-size: 10px;
  4. line-height: 16px;
  5. }

自定义徽标位置

通过 position 属性来设置徽标的位置。

  1. <van-badge :content="10" position="top-left">
  2. <div class="child" />
  3. </van-badge>
  4. <van-badge :content="10" position="bottom-left">
  5. <div class="child" />
  6. </van-badge>
  7. <van-badge :content="10" position="bottom-right">
  8. <div class="child" />
  9. </van-badge>

独立展示

当 Badge 没有子元素时,会作为一个独立的元素进行展示。

  1. <van-badge :content="20" />
  2. <van-badge :content="200" max="99" />

API

Props

参数说明类型默认值
content徽标内容number | string-
color徽标背景颜色string#ee0a24
dot是否展示为小红点booleanfalse
max最大值,超过最大值会显示 {max}+,仅当 content 为数字时有效number | string-
offset v3.0.5设置徽标的偏移量,数组的两项分别对应水平和垂直方向的偏移量,默认单位为 px[number | string, number | string]-
show-zero v3.0.10当 content 为数字 0 或字符串 ‘0’ 时,是否展示徽标booleantrue
position v3.2.7徽标位置,可选值为 top-left bottom-left bottom-rightstringtop-right

Slots

名称说明
default徽标包裹的子元素
content自定义徽标内容

类型定义

组件导出以下类型定义:

  1. import type { BadgeProps, BadgePosition } from 'vant';

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

名称默认值描述
—van-badge-size16px-
—van-badge-colorvar(—van-white)-
—van-badge-padding0 3px-
—van-badge-font-sizevar(—van-font-size-sm)-
—van-badge-font-weightvar(—van-font-weight-bold)-
—van-badge-border-widthvar(—van-border-width-base)-
—van-badge-background-colorvar(—van-danger-color)-
—van-badge-dot-colorvar(—van-danger-color)-
—van-badge-dot-size8px-
—van-badge-font-family-apple-system-font, Helvetica Neue, Arial, sans-serif-

Badge 徽标 - 图1