MOTION HUB

脉冲徽标

Badge Pulse
#badge-pulse · 04/72
HOVER · 悬停交互

参数调改

PLAYGROUND
红点颜色--dot_color
红点尺寸--dot_size
618
px
扩散周期--ring_ms
8004000
ms
呼吸周期--breath_ms
8004000
ms
呼吸脉冲--breath

实现要点

NOTES
  1. 01

    红点由两层构成:本体做 scale 0.86↔1 的呼吸(模拟发光体的明暗脉动),外圈是 1.5px 描边圆环做 scale 1→2.6 + 淡出的 ping 扩散,两层同周期但节奏错位,观感是『呼吸中不断泛出波纹』。

  2. 02

    box-shadow 0 0 0 2px 底色环把红点从图标边缘『抠』出来,深色图标上红点轮廓始终清晰,这是小圆点可读性的关键细节。

  3. 03

    两个动画都只动 transform 与 opacity(合成器路径),元素只有 10px,常驻运行的成本可忽略;infinite 循环无 JS 参与。

  4. 04

    呼吸启停通过 animation-play-state: var(--breath) 暴露成开关参数,reduced-motion 下同样用 paused 而非移除动画——保留静态红点提示、只停运动。

  5. 05

    可访问性:装饰红点 aria-hidden,图标按钮的 aria-label 已含『有新消息』语义,读屏用户不依赖视觉脉冲。

  6. 06

    若通知无未读,直接给 .pulse-dot 加 hidden 即可,动画层无需任何改动。

源代码

SOURCE

加载源代码…