Skip to content

Badge 徽标 ​

未读计数与状态点:省略 value 时是一个 6px 的圆点,给出 value 时是带数字的胶囊。

  • 小圆点:只表达“有新内容”,不显示数字。
  • 大徽标:16px 高、圆角胶囊,数字宽度自适应;max 控制折叠上限(默认 99,超出显示 99+)。
  • 颜色固定为 --ds-error / --ds-on-error,与主题的明暗模式同步,不随源色变化而失去警示含义。

计数 ​

34299+120
vue
<Badge :value="3" label="3 条未读" />
<Badge :value="42" label="42 条未读" />
<Badge :value="120" label="120 条未读" />
<Badge :value="120" :max="999" label="120 条未读" />

value 是数字且超过 max 时折叠为 ${max}+;字符串原样显示(例如 "NEW"),不参与换算。

小圆点 ​

不传 value 就是纯状态点。它本身没有文字,必须用 label 说明含义。

有新通知 离线
vue
<span class="inline-flex items-center gap-2">
  <Badge label="有新通知" />
  有新通知
</span>
<span class="inline-flex items-center gap-2">
  <Badge label="离线" class="!bg-ds-outline" />
  离线
</span>

徽标默认是 inline-flex。需要贴到图标或按钮上时,用 Icon / IconButton 的 #badge 插槽, 组件会负责右上角的相对定位。

API ​

属性类型默认值说明
valuestring | number—计数或短文本;省略或空字符串时显示小圆点
maxnumber99数字上限,超出显示 ${max}+
labelstring—无障碍名称;小圆点没有可见文字时应始终提供
  • 根元素是 span,带 role="status"(计数变化会被读屏播报)与 aria-label。
  • 其余属性与事件透传到根元素;可以覆盖颜色/尺寸,例如 class="!bg-ds-success"。

可访问性 ​

可见数字就是徽标的文本内容;只有小圆点时读屏只能拿到 label,所以不要省略它。把徽标与它描述的对象放在 同一段可读文本中(或给徽标自己的 label),避免数字孤零零地出现。