电池充电加载动画(Battery Charging Loader 电量递增)

CSSJS 许可:自研原创

电池充电加载动画,电量从 0% 到 100% 持续递增并实时显示百分比,闪电图标脉冲呼吸,支持三套配色、调速与暂停,JS 驱动轻量可控,适合下载、充电、资源加载场景。

效果演示(真实可交互)

电池外壳内绿色电量从 0% 匀速涨到 100% 后自动清零循环,下方的百分比数字与液面高度严格同步,闪电符号保持呼吸脉动。绿 / 蓝 / 粉三套配色,速度 0.3× - 3× 可调。

⚡

0%

正在充电…

配色
速度 1.0×

完整代码

HTML 结构:

<div class="bc-battery">
  <span class="bc-cap"></span>                 <!-- 电池正极凸起 -->
  <span class="bc-shell">                      <!-- 电池外壳 -->
    <span class="bc-fill"></span>              <!-- 电量液面 -->
    <span class="bc-bolt">⚡</span>            <!-- 闪电图标 -->
  </span>
</div>
<p class="bc-percent">0%</p>

CSS 核心:

.bc-shell {
  position: relative; width: 110px; height: 54px;
  border-radius: 12px; border: 3px solid #cfd7ea;
  background: #eef1f9; overflow: hidden;
}
.bc-fill {
  position: absolute; left: 0; bottom: 0; width: 100%; height: 0%;
  background: linear-gradient(180deg, #7be0a5, #34c48b);
  transition: height .16s linear;               /* 液面平滑上升 */
}
.bc-bolt {
  position: absolute; inset: 0; display: grid; place-items: center;
  font-size: 22px; color: #fff;
  animation: bc-bolt-pulse 1s ease-in-out infinite;
}
@keyframes bc-bolt-pulse { 0%, 100% { transform: scale(1); opacity: .85; }
                           50% { transform: scale(1.22); opacity: 1; } }

JS 核心(电量递增):

let pct = 0, timer = null;
function tick() {
  pct = (pct + 1) % 101;                        // 0→100 循环
  fill.style.height = pct + '%';                // 液面与数字同步
  percentEl.textContent = pct + '%';
}
timer = setInterval(tick, 260 / speed);         // speed 为倍率

参数说明

参数位置说明
递增步长pct + 1每次 +1%,改大步长(如 +5)可跳段显示
刷新间隔260 / speed毫秒,控制充电速度;260ms 时约 26s 充满
主色/次色--bc-color / --bc-color2液面渐变上下两色,三套主题由此切换
外壳描边border: 3px solid #cfd7ea加粗描边更像真实电池轮廓
闪电动画bc-bolt-pulse呼吸节奏与充电速度独立,可自行调整
液面过渡transition: height .16s过渡时长需小于刷新间隔,避免拖影

兼容性与性能

常见问题

Q: 电量到 100% 后想停住而不是循环怎么办? 在 tick 里判断 pct >= 100 时 clearInterval(timer),并给外壳加一个”充满”样式(如闪电换成对勾 ✓)即可。

Q: 液面有拖影/不平滑? 确认 transition 时长小于 setInterval 间隔;间隔改小(如 100ms)但过渡保持 0.1s,会更跟手。

Q: 想显示真实下载百分比? 把 tick 里的自增逻辑换成外部传入的进度值,如监听 XMLHttpRequest 的 progress 事件,其余渲染逻辑不变。

Q: 为什么闪电图标盖住了电量颜色? 给 .bc-bolt 加 text-shadow 并降低 opacity,或在液面上层叠半透明高光(.bc-fill::before)让闪电层更有层次。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布: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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核