时钟指针加载动画(Clock Loader 秒针环绕表盘)

CSSJS 许可:自研原创

时钟指针加载动画,秒针快速环绕、分针时针按真实比例慢转,12 刻度由 repeating-conic-gradient 一步绘出,支持浅深双色表盘、调速与暂停,纯 CSS 零依赖。

效果演示(真实可交互)

表盘中秒针每秒环绕一圈,分针与时针按 1:12:144 的真实钟表比例转动,指针运动完全符合真实时钟逻辑。浅色 / 深色表盘一键切换,速度滑块 0.3× - 3× 实时生效。

读取时间中…

表盘
速度 1.0×

完整代码

HTML 结构:

<div class="cl-clock">
  <span class="cl-dial"></span>            <!-- 刻度层 -->
  <span class="cl-hand cl-hour"></span>    <!-- 时针 -->
  <span class="cl-hand cl-minute"></span>  <!-- 分针 -->
  <span class="cl-hand cl-second"></span>  <!-- 秒针 -->
  <span class="cl-pin"></span>             <!-- 中心轴 -->
</div>

CSS 核心:

.cl-clock {
  --cl-dur: 1.6s;               /* 秒针一圈的时长 */
  position: relative; width: 150px; height: 150px;
  border-radius: 50%; border: 2px solid #e3e8f5;
}

/* 12 个刻度:repeating-conic-gradient 一步画出,免去 12 个节点 */
.cl-dial { position: absolute; inset: 7px; border-radius: 50%;
  background: repeating-conic-gradient(#c8d0e8 0deg 1.5deg, transparent 1.5deg 30deg); }

/* 指针统一定位:底部中心为旋转轴 */
.cl-hand { position: absolute; left: 50%; bottom: 50%;
           transform-origin: 50% 100%; border-radius: 6px; }
.cl-hour   { width: 5px; height: 34px; margin-left: -2.5px;
             animation: cl-spin calc(var(--cl-dur) * 144) linear infinite; }
.cl-minute { width: 3.5px; height: 48px; margin-left: -1.75px;
             animation: cl-spin calc(var(--cl-dur) * 12) linear infinite; }
.cl-second { width: 2px; height: 54px; margin-left: -1px;
             animation: cl-spin var(--cl-dur) linear infinite; }

@keyframes cl-spin { to { transform: rotate(360deg); } }

JS(调速): 只改 --cl-dur 一个变量,三根指针按倍率同步加速/减速,比例关系不变。

参数说明

参数位置说明
秒针周期--cl-dur秒针转一圈时长,默认 1.6s
指针比例×12 / ×144分针、时针的周期倍数,保持 1:12:144 才像真钟
刻度样式repeating-conic-gradient30deg 一步 = 12 格;改角度可换刻度密度
表盘配色--cl-face / --cl-tick表底与刻度颜色,支持深色表盘
秒针色--cl-second建议用高饱和强调色与时针区分
指针尺寸各指针的宽高时针短粗、秒针长细更符合视觉习惯

兼容性与性能

常见问题

Q: 想让秒针走”滴答”式而非平滑转动? 把 animation-timing-function 改为 steps(60, end),秒针就会一秒一格地跳动,更像真实机械表。

Q: 需要显示真实的当前时间怎么办? 用 JS 读取 Date 计算三根指针的初始角度,再叠加 CSS 动画即可;秒针初值 = seconds / 60 * 360deg,分针要加上秒针带来的微小偏移才精确。

Q: 为什么时针要转 144 圈才转完一圈? 因为演示里秒针 1.6s 转一圈(相当于”1 秒”),按真实比例时针一圈 = 144 个秒针周期;实际使用时可单独调整三根指针的时长,比例不必严格。

Q: 刻度在部分浏览器渲染偏细或发虚? 把渐变的实线角度从 1.5deg 加大到 2.5deg,或在 .cl-dial 上加 transform: translateZ(0) 强制走 GPU 层即可改善。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核