加载动画之充电水滴动画
结构
使用css写一个充电水滴动画,可以当做web场景中的加载动画使用,通过这个案例也可以了解到css如何做插值模糊,极为简单的了了数句就可实现的创意动画。
<div class="container">
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="collection"></div>
<span class="progress">75%</span>
</div>
:root{
--drop-color: rgb(181, 249, 252);
}
.container {
width:100%;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #000;
flex-direction: column;
}
.drop {
width: 80px;
height: 90px;
border-radius: 50%;
background-color: var(--drop-color);
position: absolute;
}
.collection {
width: 120px;
height: 120px;
background-color: var(--drop-color);
border-radius: 50%;
position: relative;
}
.progress {
position: absolute;
font-size: 32px;
font-family: fantasy;
color: #333;
}
差值模糊
这里很简单只有两句css,就可让我们的视图完全变了一个样子。
.container{
filter: contrast(30);
}
.collection{
filter: blur(20px);
}
我们先在主容器调整输入图像的对比度值,值是 0%的话,图像会全黑。值是 100%,图像不变,所以要选择一个适合的值。然后在下面的容器添加模糊,这样一来,整个画面的对比度会提升的同时,如果出现了模糊,那么这些模糊的元素可以忽略边界像是粘连在一起。
现在只是看到了对比度的变化,等下我们添加水滴动画,就可以发现粘连效果了。
粘连动画
.drop {
width: 80px;
height: 90px;
border-radius: 50%;
background-color: var(--drop-color);
filter: blur(20px);
position: absolute;
animation: 3.2s down linear infinite;
animation-fill-mode: backwards;
}
.drop:nth-of-type(1) {
animation-delay: 0s;
}
.drop:nth-of-type(2) {
animation-delay: 0.5s;
}
.drop:nth-of-type(3) {
animation-delay: 0.7s;
}
.collection {
width: 120px;
height: 120px;
background-color: var(--drop-color);
filter: blur(20px);
animation: 8s spin linear infinite;
border-radius: 50%;
position: relative;
}
@keyframes down {
0% {
opacity: 0;
transform: translateY(-600%) scale(0.7);
}
50% {
opacity: 1;
transform: translateY(-100%) scale(0.5);
}
100% {
opacity: 0;
transform: translateY(0%) scale(0.45);
}
}
@keyframes spin {
0% {
transform: scale(1) rotate(0deg);
}
50% {
transform: scale(1.15) rotate(180deg);
border-radius: 40% 10% 50% 45%;
}
100% {
transform: scale(1) rotate(360deg);
}
}
- 水滴动画:我们这里做了三个水滴,设置他们不同的等待的下落时间,整个动画就是让其由上至下,由大至小的下落。
- 旋转动画:让主盒子进行旋转并且在此过程中改变其圆角比例和大小,显得与下落水滴相融的反应。
讲到这里,这个动画就完成了,在线演示。