使用CSS实现充电动画效果,核心是通过css_keyframes定义动画规则,结合渐变、阴影等属性模拟电量填充和光影流动的效果,整体实现逻辑简单且性能表现优秀。

基础电池结构绘制
首先我们需要绘制电池的基础外观,包括电池主体和顶部的正极部分,这里使用div元素配合CSS样式实现。
<div class="battery">
<div class="battery-cap"></div>
<div class="battery-body">
<div class="battery-fill"></div>
</div>
</div>
对应的CSS样式如下,通过边框和圆角属性模拟电池的真实外观:
.battery {
display: flex;
align-items: center;
width: 200px;
margin: 50px auto;
}
.battery-cap {
width: 10px;
height: 30px;
background: #333;
border-radius: 3px 0 0 3px;
}
.battery-body {
width: 180px;
height: 80px;
border: 3px solid #333;
border-radius: 0 10px 10px 0;
position: relative;
overflow: hidden;
}
.battery-fill {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 0%;
background: linear-gradient(to top, #4CAF50, #8BC34A);
border-radius: 0 7px 7px 0;
}
电量填充动画实现
接下来通过css_keyframes定义电量从0%到100%的填充动画,同时给填充区域添加高度变化的过渡效果。
@keyframes charge {
0% {
height: 0%;
}
100% {
height: 100%;
}
}
.battery-fill {
/* 之前的样式保留 */
animation: charge 3s linear infinite;
}
这里我们设置了3秒完成一次完整的充电流程,linear让动画速度保持均匀,infinite让动画循环播放。
添加光影流动细节
为了让充电动画更酷炫,可以给填充区域添加光影流动的效果,模拟电量上升时的动态光泽。
.battery-fill {
/* 之前的样式保留 */
background: linear-gradient(
to top,
#4CAF50 0%,
#8BC34A 50%,
#4CAF50 100%
);
background-size: 100% 200%;
animation: charge 3s linear infinite, flow 1.5s linear infinite;
}
@keyframes flow {
0% {
background-position: 0 0;
}
100% {
background-position: 0 200%;
}
}
这里通过background-size把渐变背景的高度设置为容器的2倍,再通过flow动画改变背景的位置,实现光影向上流动的效果。
电量百分比显示
还可以在电池内部添加实时的电量百分比显示,让动画更直观。
<div class="battery-body"> <div class="battery-fill"></div> <div class="battery-percent">0%</div> </div>
.battery-percent {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #333;
font-size: 20px;
font-weight: bold;
z-index: 2;
}
如果需要同步百分比数字的变化,可以配合少量JavaScript实现,不过核心的动画效果依然由CSS完成。
适配不同场景的调整技巧
如果需要在深色背景下使用,可以调整电池边框和文字的颜色,同时修改填充区域的渐变配色,比如使用蓝色系模拟快充效果:
.battery-cap {
background: #666;
}
.battery-body {
border-color: #666;
}
.battery-fill {
background: linear-gradient(
to top,
#2196F3 0%,
#03A9F4 50%,
#2196F3 100%
);
}
.battery-percent {
color: #fff;
}
另外可以通过调整animation-duration的数值改变充电速度,数值越小充电越快,也可以给电池添加悬停暂停的交互效果,提升用户体验。
CSS动画css_keyframes充电动画前端开发修改时间:2026-07-13 13:18:23