Skip to content

xtf-badge

组件说明

xtf-badge 是徽标组件,用于在元素角落或独立位置展示数字、文字、图标或圆点提示。支持多种视觉变体(实心、柔和、描边、玻璃、气泡)、9 个定位方向、脉冲/弹跳/波纹动画和独立模式,适用于消息未读数、状态标记和新功能提示等场景。


基础用法

1. 数字徽标

通过 value 设置数字,包裹目标元素即可在右上角显示徽标:

vue
<template>
  <view style="display: flex; gap: 32rpx; align-items: center">
    <xtf-badge :value="5">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="120" :max="99">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="0" show-zero>
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
  </view>
</template>

2. 圆点与文字徽标

通过 dot 显示圆点提示,通过 text 显示自定义文字:

vue
<template>
  <view style="display: flex; gap: 32rpx; align-items: center">
    <xtf-badge dot>
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge text="新">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge text="HOT" theme="danger">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
  </view>
</template>

3. 主题色与变体

通过 theme 切换主题色,通过 variant 切换视觉风格:

vue
<template>
  <view style="display: flex; gap: 24rpx; align-items: center; flex-wrap: wrap">
    <xtf-badge :value="3" theme="primary" variant="solid">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="3" theme="danger" variant="soft">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="3" theme="success" variant="outline">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="3" theme="warning" variant="glass">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="3" theme="info" variant="bubble">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
  </view>
</template>

4. 位置与偏移

通过 position 设置徽标在目标元素上的位置(9 个方向),通过 offsetX / offsetY 微调偏移:

vue
<template>
  <view style="display: flex; gap: 32rpx; align-items: center">
    <xtf-badge dot position="top-left">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge dot position="top-right">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge dot position="bottom-right">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="8" position="top-right" :offset-x="4" :offset-y="-4">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
  </view>
</template>

5. 动画与独立模式

通过 motion 设置动画效果(pulse / bounce / wave),通过 standalone 使徽标脱离目标元素独立展示:

vue
<template>
  <view style="display: flex; gap: 32rpx; align-items: center">
    <xtf-badge :value="6" motion="pulse">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="3" motion="bounce">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge :value="9" motion="wave" theme="danger">
      <view style="width: 80rpx; height: 80rpx; background: #f0f0f0; border-radius: 16rpx" />
    </xtf-badge>
    <xtf-badge text="NEW" standalone theme="danger" />
  </view>
</template>

全部属性

属性类型默认值作用描述适用范围
valueString | Number''徽标数字值,超过 max 显示 N+数字徽标
textString''自定义文字内容,优先级高于 value文字徽标
iconString''徽标图标名,支持 xtf-icon 图标库图标徽标
iconPositionString'start'图标位置:'start' 左侧 / 'end' 右侧控制图标方向
iconSizeString | Number''图标大小,默认跟随字号自定义图标大小
dotBooleanfalse是否显示为圆点模式简约提示
showZeroBooleanfalsevalue 为 0 时是否显示需要显示 0 的场景
maxString | Number99数字最大值,超过显示 N+控制溢出显示
sizeString''徽标尺寸:'sm' / 'md' / 'lg'控制徽标大小
themeString'primary'主题色:'primary' / 'success' / 'warning' / 'danger' / 'info' / 'inverse'切换主题色
colorString''自定义背景色,设置后 theme 失效精确控制颜色
softColorString''soft 变体的自定义背景色精确控制柔和色
textColorString''自定义文字颜色精确控制文字色
borderColorString''自定义边框颜色精确控制边框色
bubbleEndColorString''bubble 变体渐变结束色精确控制气泡渐变
variantString'solid'视觉变体:'solid' / 'soft' / 'outline' / 'glass' / 'bubble'切换视觉风格
shapeString'pill'形状:'pill' 胶囊 / 'rounded' 圆角 / 'square' 方形切换形状
positionString'top-right'徽标位置:'top-left' / 'top-center' / 'top-right' / 'middle-left' / 'center' / 'middle-right' / 'bottom-left' / 'bottom-center' / 'bottom-right'控制徽标位置
motionString''动画效果:'pulse' 脉冲 / 'bounce' 弹跳 / 'wave' 波纹吸引注意力
standaloneBooleanfalse是否独立模式,不依赖包裹元素独立展示徽标
insetBooleanfalse是否内缩显示,徽标略微缩小内嵌样式
offsetXString | Number0水平偏移量(rpx)微调水平位置
offsetYString | Number0垂直偏移量(rpx)微调垂直位置
clickableBooleanfalse是否可点击徽标可交互场景
ringColorString''自定义外环/边框颜色精确控制外环色
showBorderBooleantrue是否显示边框隐藏边框
customClassString''自定义类名样式覆盖
customStyleString | Object''自定义样式动态样式覆盖

事件

事件名称触发时机回调参数参数说明
click点击徽标时触发(需 clickabletrue(event)原生点击事件对象

插槽

插槽名说明
默认插槽徽标所依附的内容;standalonefalse 时,徽标按 position 覆盖在该内容上。
vue
<template>
  <xtf-badge :value="3" theme="danger">
    <xtf-button label="待处理订单" type="light" />
  </xtf-badge>
</template>

主题说明

  • 徽标圆角使用 var(--xtf-badge-radius)
  • 徽标边框使用 var(--xtf-badge-ring)
  • solid 变体阴影使用 var(--xtf-badge-solid-shadow)
  • soft 变体背景使用各主题的 *-soft CSS 变量
  • glass 变体背景使用 var(--xtf-color-glass),模糊使用 var(--xtf-badge-glass-blur),边框使用 var(--xtf-badge-glass-border)
  • bubble 变体边框使用 var(--xtf-badge-bubble-border),内阴影使用 var(--xtf-badge-bubble-inset-shadow)
  • 文字颜色默认使用 var(--xtf-badge-text)
  • 点击缩放使用 var(--xtf-motion-active-scale)

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖上述 CSS 变量。

MIT Licensed