<html>
<head>
<title></title>
<style>
html,
body {
width: 100%;
height: 100%;
display: flex;
background: #e4e4e4;
margin: 0;
}
.container {
margin: auto;
text-align: center;
}
br.small {
display: none;
}
br.large {
display: block;
}
/* 电池特效-start */
.battery_box {
position: relative;
width: 140px;
margin: auto;
}
.battery_box .header {
position: absolute;
width: 26px;
height: 10px;
left: 50%;
top: 0;
transform: translate(-50%,
-10px);
border-radius: 5px 5px 0 0;
background: rgba(255, 255, 255, .88);
}
.battery {
position: relative;
height: 220px;
box-sizing: border-box;
border-radius: 15px 15px 5px 5px;
box-shadow: 0 0 5px 2px rgba(255, 255, 255, 0.22);
background: #fff;
z-index: 1;
}
.battery::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 80%;
background: linear-gradient(to bottom, #7abcff 0%, #00BCD4 44%, #2196F3 100%);
border-radius: 0px 0px 5px 5px;
box-shadow: 0 14px 28px rgba(33, 150,
243, 0), 0 10px 10px rgba(9, 188, 215, 0.08);
animation: charging 10s linear infinite;
filter: hue-rotate(90deg);
}
.wave-box {
position: absolute;
top: 0;
left: 0;
height: 220px;
width: 140px;
border-radius: 15px 15px 5px 5px;
overflow:
hidden;
}
.g-wave {
position: absolute;
width: 300px;
height: 300px;
background: rgba(255, 255, 255, .8);
border-radius: 45% 47% 44% 42%;
bottom: 25px;
left: 50%;
transform: translate(-50%, 0);
z-index: 1;
animation: move 10s linear infinite;
}
.g-wave:nth-child(2) {
border-radius: 38% 46% 43% 47%;
transform: translate(-50%, 0) rotate(-135deg);
}
.g-wave:nth-child(3) {
border-radius: 42% 46% 37% 40%;
transform: translate(-50%, 0) rotate(135deg);
}
@keyframes charging {
50% {
box-shadow: 0 14px 28px rgba(0, 150, 136, 0.83), 0px 4px 10px rgba(9, 188, 215, 0.4);
}
95% {
top: 5%;
filter: hue-rotate(0deg);
border-radius: 0 0 5px 5px;
box-shadow: 0 14px 28px rgba(4, 188, 213, .2), 0 10px 10px rgba(9, 188, 215, 0.08);
}
100% {
top: 0%;
filter: hue-rotate(0deg);
border-radius: 15px 15px 5px 5px;
box-shadow: 0 14px 28px rgba(4, 188, 213, 0),
0 10px 10px rgba(9, 188, 215, 0.4);
}
}
@keyframes move {
100% {
transform: translate(-50%, -160px) rotate(720deg);
}
}
/* 电池特效-end */
.words p {
font-size: 20px;
font-weight: bold;
background: linear-gradient(to top, #2196F3 50%, #fff 50%);
background-size: auto 200%;
-webkit-background-clip: text;
background-clip: text;
text-fill-color: transparent;
-webkit-text-fill-color: transparent;
animation: words-fillup 3s linear infinite;
/*infinite:无限循环,forwards:停留最后一帧*/
}
@keyframes words-fillup {
to {
background-position: center 100%
}
}
</style>
</head>
<body>
<div class="container">
<!-- 电池 -->
<div class="battery_box">
<div class="header"></div>
<div class="battery"></div>
<div class="wave-box">
<div class="g-wave"></div>
<div class="g-wave"></div>
<div class="g-wave"></div>
</div>
</div>
<!-- 文字 -->
<div class="words">
<p>最长达 20 <br class="small">小时<br class="large">电池<br class="small">续航,<br class="large">巨无霸 <br
class="small">史上最强。</p>
</div>
</div>
</body>
</html>
*部分转载:CSS模拟电池充电效果的实现