Skip to content

Badge 徽标

数字/状态徽标,通常用于消息计数或新内容提示。

基础用法

数字徽标

通知未读消息

上限显示

超过 max 时显示 max+

上限显示

评论

小圆点

状态点

在线状态

零值

默认隐藏 0,设置 showZero 时显示。

零值控制

默认隐藏 0显示 0

独立徽标

不包裹任何子内容时,徽标从「贴右上角」回落为静态行内展示(不塌陷),可独立放在文本流或菜单行里。

独立徽标

新消息 待办事项 系统运行中

图标徽标

icon 传入 iconRegistry 图标名,徽标内渲染小图标(如状态角标放 √ / !)。与 value / dot 互斥:icon 优先显示图标,不渲染数字/圆点;非法图标名静默回落数字逻辑。

图标徽标

已完成需注意已失败

徽标颜色

color 支持四种语义色(primary / success / warning / danger)、任意 CSS 色值、以及 11 个预设名(magenta / red / volcano / orange / gold / lime / green / cyan / blue / geekblue / purple,映射 --oas-preset-* token,dark 自动调亮)。count / dot / ribbon 三种模式统一生效,实心文字色按底色亮度自动取黑/白保证可读。

count 语义色

primarysuccesswarningdanger

count 预设色

magentageekbluegoldcyan

count / dot 自定义色

#7c3aed 紫色dot #e11d48dot purple

描边形态

variant="outline" 切换为描边徽标:背景透明、边框与文字走 color 语义色(solid 实心为默认,非法值回落)。适合叠加在图片/彩色底上的场景;与 bordered 白描边可叠加。

outline 描边形态

outline 默认outline successoutline dotoutline 自定义色 + bordered

偏移

offset="x,y"(px 数字)在角标定位基础上额外平移,x 正向右、y 正向下(屏幕坐标,与角标朝向无关);非法值(非数字、缺坐标)静默忽略。与 corner 可叠加:先定角再平移。

offset 偏移

向右下偏移向下偏移

四角定位

corner 把角标定位到宿主四角之一:top-right(默认)/ top-left / bottom-right / bottom-left;非法值静默回落 top-rightoffset 是在 corner 结果上的精确微调(先定角、再平移,可叠加)。

四角定位

top-right 默认top-leftbottom-rightbottom-left

corner + offset 叠加

bottom-left 向右下微调top-left 向下微调

圆形内收

包裹圆形内容(如头像)时加 overlap,角标向圆内收进圆边:平移幅度从 50% 收到约 29%(1-√2/2 几何内收)。仅影响角标模式。

overlap 圆形内收

白描边

bordered 给徽标加 2px 背景色描边(box-shadow: 0 0 0 2px var(--oas-color-bg)),从头像/图片等复杂背景中分离出来;仅视觉叠加、不改定位,与 corner / offset / overlap 联动正常。

bordered 白描边

状态点

status 渲染「状态点 + text 文字」的行内独立元素(非角标定位),与 ribbon / dot / count 模式互斥(设置时优先渲染状态点)。processing 圆点带脉冲动画(prefers-reduced-motion 下停用)。

状态点

尺寸档位

size 提供三档:small(小档,数字徽标高约 13px、dot 6px)/ medium(默认,约 16px、dot 8px)/ large(大档,约 20px、dot 10px);非法值静默回落 medium

尺寸档位 small / medium / large

smallsmall 99+small dotmedium 默认medium 显式largelarge 99+large dot

吸引动画

attention="pulse" 让徽标外圈周期性脉冲扩散(脉冲颜色可用 --oas-badge-pulse-color 自定义,默认跟随徽章底色);attention="bounce" 让徽标轻微上下弹跳。仅作用于 count / dot / standalone 徽标(缎带不受影响),prefers-reduced-motion 下自动停用。

pulse 脉冲

pulse 脉冲dot pulse自定义脉冲色

bounce 弹跳

bounce 弹跳dot bounce

原生提示

给徽标宿主加原生 title 属性即可获得悬停原生提示,无需任何 JS。

原生提示

未读消息

动态增减

value 变化即时反映;宿主可在点击按钮时为徽标添加动画 class 实现过渡反馈(本例通过 ::part(badge) 做缩放/透明度小动画)。

数字徽标内置 role="status" + aria-live="polite" + aria-atomic="true":数字(含 max 截断显示值)变化时通过 aria-label 向屏幕阅读器播报,文案走 locale(如「5 条未读通知」),无需额外 JS。

动态增减

动态计数

缎带角标

ribbon 布尔属性或 mode="ribbon" 开启缎带角标。文本经 text 属性提供,默认位于右端(placement="end"),可用 placement="start" 切到左端。

普通缎带

默认缎带(右上角)

mode="ribbon"(左上角)

缎带位置

ribbon-position 控制缎带的纵向位置:hang(默认,挂沿下)/ edge(贴顶边)/ cross(骑跨顶边,压住卡片顶边框,包裹感最强)。三种位置与 placement(start / end 横向)正交,两侧均生效。

缎带位置

hang(默认,挂沿下)

edge(贴顶边)

cross(骑跨顶边)

缎带位置(placement=start 左侧)

hang(挂沿下)

edge(贴顶边)

cross(骑跨顶边)

缎带形态

ribbon-form 切换缎带形态:fold(默认,直条 + 折叠)/ diagonal(45° 对角斜带,条身探出卡外,宿主需 overflow: hidden 裁切)/ triangle(角落纯三角形,内容为小图标或 slot="ribbon")/ bookmark(顶边垂挂 + 底部燕尾缺口)/ side(侧边竖挂)/ seal(圆形锯齿印章,文字居中)/ banner(顶部横贯横幅,两端折角)/ flag(侧燕尾横旗,横条 + 探出端 V 缺口,缺口始终朝探出端)。非法值静默回落 foldribbon-direction 控制 bookmark 的燕尾尖头方向(down 默认顶边垂挂 / left 贴右缘尖头朝左 / right 贴左缘尖头朝右,物理方向 RTL 不翻转),仅 bookmark 生效;ribbon-vertical 控制侧挂(left/right)的纵向位置(center 默认垂直居中 / top 贴顶边 / bottom 贴底边)。ribbon-size 给 diagonal 提供 sm(默认)/ md / lg 三档(档位只改带宽/字号/钉点默认值,宿主 --oas-badge-diagonal-* 自定义属性优先级更高)。ribbon-position 纵向三选仅作用于 fold 形态,其余形态有各自的纵向定位。offset 给所有缎带形态做任意位置微调(offset="x,y" px 平移,支持负值)。rolled 布尔修饰给探出外端加卷边(端部大圆角 + 内侧渐暗模拟卷起圆柱),可叠加 fold / banner / flag

缎带形态

fold

diagonal

triangle

bookmark

bookmark direction=left(尖头朝左)

bookmark direction=right(尖头朝右)

bookmark left + vertical=top

bookmark right + vertical=bottom

side

seal

banner

flag(侧燕尾横旗)

rounded(圆头)

zigzag(锯齿)

arrow(箭头)

fold + rolled 卷边

diagonal + ribbon-size=lg

ribbon-size 给 diagonal 提供三档(sm 默认 / md 中等 / lg 宽幅大字),档位只改带宽、字号与带中心钉点的默认值;宿主可直接覆盖 --oas-badge-diagonal-height / --oas-badge-diagonal-font / --oas-badge-diagonal-pin / --oas-badge-diagonal-text-inset 自定义属性,其优先级高于档位。

diagonal 尺寸档位 sm / md / lg

ribbon-size=sm(默认)

ribbon-size=md

ribbon-size=lg

offset 给所有缎带形态提供任意位置微调:offset="x,y" 在形态自身锚点基础上做 px 平移(x 正向右、y 正向下,支持负值),与 placement / ribbon-position / ribbon-vertical 等正交叠加。

缎带 offset 任意位置微调

bookmark left + offset=0,20

fold + offset=0,-8

diagonal + offset=-30,0

ribbon-anchor 统一缎带锚点,锚点集合按形态语义适配(形态与位置绑定):

  • fold:左右边中 + 四角(横条贴左/右,纵向上下可调)
  • diagonal / triangle:四角
  • side:左右边中 + 四角
  • banner:顶部/底部(全宽横幅)
  • seal:8 位置全支持
  • bookmark:四角 + 四边中 锚点预置贴边/贴角(底部锚点时折叠角自动翻转),任意位置再用 offset 微调兜底。

缎带锚点:斜形态四角

diagonal top-left

diagonal top-right

diagonal bottom-left

diagonal bottom-right

缎带锚点:fold 位置(贴左/右,上下可调)

fold left(边中)

fold right(边中)

fold bottom-left(折叠角翻转)

fold bottom-right(折叠角翻转)

premium 金属质感

premium 给缎带叠加金色金属质感:多段亮金→暗金渐变底 + 深金细描边(clip-path 形态沿轮廓描边),文字色按金底亮度自动取深色。与 color 正交叠加,优先级 premium > color > 语义色默认;与 ribbon-form 各形态均可组合,dark 主题自动适配(走 --oas-preset-gold token 联动)。

premium 金属质感

premium fold

premium 覆盖 color

premium bookmark

premium seal

premium diagonal

premium banner

彩色缎带

color 支持 primary / success / warning / danger 四种语义色,与主题 light/dark 联动;同样支持预设名与任意色值(走 --oas-preset-* token / 原色值注入)。

彩色缎带

primary

success

warning

danger

缎带预设色与自定义色

geekblue

#7c3aed

自定义缎带内容

text 属性外,也可用 slot="ribbon" 传入任意自定义内容(有插槽内容时优先)。

自定义内容

新品 8 折起

slot="ribbon" 自定义内容

与数字/圆点徽标对比

同一 oas-badge 可做 count 或 ribbon 两种用途:count 徽标固定在右上角的小圆点/数字,dot 是无文本状态点,ribbon 则横跨卡片上沿的缎带;status 是独立行内的「状态点 + 文字」。

count / dot / ribbon 对比

count 数字徽标

dot 状态点

ribbon 缎带

API

属性

属性说明类型默认值
attention吸引动画:pulse(外圈脉冲扩散,脉冲色走 --oas-badge-pulse-color 自定义属性、默认跟随徽章底色)/ bounce(轻微上下弹跳);仅作用于 count / dot / standalone 徽标(缎带不受影响),prefers-reduced-motion 下自动停用BadgeAttention
bordered白描边:布尔属性,徽标加 2px 背景色描边(box-shadow: 0 0 0 2px var(--oas-color-bg)),从头像/图片背景分离;仅视觉叠加不改定位(与 corner/offset/overlap 联动正常)boolean
color徽标颜色:4 语义色(primary / success / warning / danger)、任意 CSS 色值、或 11 个预设名(magenta / red / volcano / orange / gold / lime / green / cyan / blue / geekblue / purple,映射 --oas-preset-* token,dark 自动调亮)。count / dot / ribbon 三种模式统一生效,实心文字色按底色亮度自动取黑/白保证可读BadgeColor | BadgePresetColor
corner角标四角定位:top-right(默认)/ top-left / bottom-right / bottom-left,仅影响 count / dot 角标(ribbon 用 placement);offset 在其结果上做屏幕坐标 px 微调(x 正向右、y 正向下,与 corner 朝向无关),先定角再平移可叠加;非法值静默回落 top-rightBadgeCornertop-right
dot小圆点模式boolean
icon徽标内图标:iconRegistry 图标名(如 check / warning),渲染内联 SVG(1em 跟随徽标字号、装饰性对读屏隐藏);与 value/dot 互斥(icon 优先)string
max上限string
mode模式:count(默认,数字/圆点徽标)或 ribbon(缎带角标,等价 ribbon 属性)BadgeModecount
offset位置微调:"x,y"(px 数字,支持负值),在角标/缎带定位基础上额外平移(x 正向右、y 正向下);与 corner / placement / ribbon-vertical 可叠加(先定位再平移);非法值(非数字、缺坐标)静默忽略string
overlap圆形内收:包裹圆形内容(如头像)时角标向圆内收进圆边(平移幅度从 50% 收到约 29%,1-√2/2 几何内收);仅影响角标模式boolean
placement缎带位置:start(行首)/ end(行尾,默认)BadgePlacementend
premium金属质感:金色多段渐变底 + 深金细描边(clip-path 形态沿轮廓描边),文字色按金底亮度取深色;与 color 正交叠加,优先级 premium > color > 语义色默认;与 ribbon-form 各形态可组合,dark 主题自动适配(走 --oas-preset-gold token)boolean
ribbon缎带角标模式(布尔,等价 mode="ribbon"boolean
ribbon-anchor缎带统一锚点,锚点集合按形态语义适配:fold(left/right 边中 + 四角,横条贴左/右、纵向上下可调)、diagonal/triangle(四角)、side(left/right 边中 + 四角)、banner(top/bottom)、seal(8 位置全支持)、bookmark(四角 + 四边中);锚点预置贴边/贴角(底部锚点时折叠角自动翻转),任意位置用 offset 微调兜底;未设置时回落 placement/ribbon-position/ribbon-direction/ribbon-vertical 兼容别名,非法值或该形态不支持的锚点静默回落BadgeRibbonAnchor
ribbon-directionbookmark 燕尾尖头方向:down(默认,顶边垂挂,尖头朝下)/ left(贴右缘,尖头朝左)/ right(贴左缘,尖头朝右);物理方向语义(RTL 下不翻转);仅 ribbon-form="bookmark" 生效,非法值静默回落 downBadgeRibbonDirectiondown
ribbon-form缎带形态:fold(默认,直条 + 折叠)/ diagonal(45° 对角斜带,条身探出卡外,宿主需 overflow: hidden 裁切)/ triangle(角落纯三角形,内容为小图标或 slot="ribbon")/ bookmark(顶边垂挂 + 底部燕尾缺口)/ side(侧边竖挂)/ seal(圆形锯齿印章,文字居中)/ banner(顶部横贯横幅,两端折角)/ flag(侧燕尾横旗,横条 + 燕尾 V 缺口,缺口始终朝卡片内侧端:徽标在右缺口在左、在左缺口在右)/ rounded(圆头端)/ zigzag(锯齿端)/ arrow(箭头端);ribbon-position 纵向三选仅作用于 fold,其余形态有各自纵向定位,非法值静默回落 foldBadgeRibbonFormfold
ribbon-position缎带纵向位置:hang(默认,挂沿下)/ edge(贴顶边)/ cross(骑跨顶边,压住卡片顶边框,包裹感最强);与 placement(start/end 横向)正交,仅作用于 ribbon-form="fold" 形态,非法值静默回落 hangBadgeRibbonPositionhang
ribbon-sizediagonal 斜带尺寸档位:sm(默认,30px 带宽 / xs 字号)/ md(33px / sm 字号,钉点 35px)/ lg(36px / md 字号,钉点 45px,宽幅大字场景);档位只改 --oas-badge-diagonal-* 的 fallback 默认值,宿主自定义属性优先级更高;仅 ribbon-form="diagonal" 生效,非法值静默回落 smBadgeRibbonSizesm
ribbon-verticalbookmark 侧挂(ribbon-direction="left" / "right")的纵向位置:center(默认,垂直居中)/ top(贴顶边)/ bottom(贴底边);仅侧挂生效,非法值静默回落 centerBadgeRibbonVerticalcenter
rolled端部卷边:布尔修饰,给探出外端做卷边效果(端部大圆角 + 内侧渐暗渐变模拟卷起圆柱,纯 CSS);可叠加 fold / banner / flag,其他形态静默忽略boolean
showZerovalue=0 时是否显示boolean
size尺寸档位:small(小档,数字徽标高约 13px、dot 6px)/ medium(默认,约 16px)/ large(大档,约 20px、dot 10px);非法值静默回落 mediumBadgeSize
status状态点形态:success / processing / default / error / warning,渲染「状态点 + text 文字」的行内独立元素,与 ribbon / dot / count 模式互斥(设置时优先渲染);processing 圆点带脉冲动画(prefers-reduced-motion 下停用)BadgeStatus
text缎带或状态点文字;slot="ribbon" 有内容时以插槽为准string
value数字string
variant形态:solid(默认,实心)或 outline(描边:背景透明、边框与文字走 color 语义色);非法值静默回落 solidBadgeVariant

插槽

名称说明
默认被包裹内容(卡片、按钮等);无内容时徽标回落为独立行内展示
ribbon缎带自定义内容

基于 MIT OR Apache-2.0 双许可发布