HOVER · 悬停交互
参数调改
PLAYGROUND
进度色 A--ring_a
进度色 B--ring_b
环直径--ring_size
100260
环带厚度--ring_w
622
填充时长--dur_ms
6004000
底轨颜色--track
实现要点
NOTES- 01
进度弧 = conic-gradient 从 12 点方向铺到 var(--p),再用 radial-gradient mask 挖掉中心只留环带——不用 SVG stroke-dasharray,纯 CSS 绘制,粗细由 --ring_w 一个变量控制。
- 02
--p 必须用 @property 注册为 <percentage> 才能被 keyframes 插值;环带内的细白高亮线复用同一个 --p 做第二层 conic,端点有光点(box-shadow 辉光)随 rAF 同步旋转到弧末端。
- 03
中心百分比数字由 JS rAF 驱动,与 --p 动画共用同一条 easing 曲线(近似 easeInOutQuad),数字与弧线始终对齐;aria-valuenow 同步更新保证读屏一致。
- 04
重播通过『动画置 none → 强制 reflow → 恢复』重启 CSS 动画,同时 rAF 重跑数字;这是重启已结束的 forwards 动画的标准手法。
- 05
环直径、厚度、字号全部由 --ring_size calc 推导,缩放参数整体联动;底轨是独立的 conic 层,颜色可调。
- 06
reduced-motion:CSS 动画压到 0.01ms,JS 数字直接落终值,环瞬间呈现完整进度。
源代码
SOURCE
加载源代码…