假设我想想做下图这样的动画
观察动画得出结论
- 透明度在变化(opacity)
- 上下位置在变化(transform)
- 三个圆点动画存在“时差”(animation-delay)
- 动画不断循环,且如丝般顺滑(alternate)
初始化
- 定义三个div
<div class="bouncing-loader">
<div></div>
<div></div>
<div></div>
</div>
- 初始化状态
.bouncing-loader {
display: flex;
justify-content: center;
}
.bouncing-loader > div {
width: 1rem;
height: 1rem;
margin: 3rem 0.2rem;
background: #8385aa;
border-radius: 50%;
}
此时三个球球长这样
定义动画关键帧
告诉元素该怎么动!
@keyframes keyname{
from{
}
to {
opacity: 0.1;
transform: translate3d(0, -1rem, 0);
}
}
2、使用定义好的动画关键帧
- 使用定义好的动画关键帧,设置动画时间,动起来!
.bouncing-loader > div {
width: 1rem;
height: 1rem;
margin: 3rem 0.2rem;
background: #8385aa;
border-radius: 50%;
animation: bouncing-loader 0.6s;
}
注意:看到不断在循环是因为动图在循环播放实际动画只动了一次
- 差点啥?
animation: bouncing-loader 0.6s infinite alternate;
- 最后加入时差
第二个慢点,第三个再慢点
.bouncing-loader > div:nth-child(2) {
animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
animation-delay: 0.4s;
}