怎么使用纯CSS实现小球跳跃台阶的动画效果

  介绍

小编给大家分享一下怎么使用纯CSS实现小球跳跃台阶的动画效果,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

效果预览

怎么使用纯CSS实现小球跳跃台阶的动画效果

源代码下载https://github.com/comehope/front-end-daily-challenges

代码解读

定义dom,容器中包含5个元素,代表5个台阶:

& lt; div类=發oader"比;   & lt; span> & lt;/span>   & lt; span> & lt;/span>   & lt; span> & lt;/span>   & lt; span> & lt;/span>   & lt; span> & lt;/span>   & lt;/div>

居中显示:

身体{   保证金:0;   身高:100 vh;   显示:flex;   对齐项目:中心;   justify-content:中心;   背景颜色:黑色;   }

定义容器尺寸:

。装载机{   宽度:7他们;   身高:5 em;   字体大小:40像素;   }

画出5个台阶:

。装载机{   显示:flex;   justify-content:之间的空间;   对齐项目:flex-end;   }      .loader跨度{   宽度:1 em;   身高:1 em;   背景颜色:白色;   }

用变量让5个台阶从低到高排序:

。装载机跨度{   高度:钙(var (- n) * 1 em);   }      .loader跨度:nth-child (1) {   ——n: 1;   }      .loader跨度:nth-child (2) {   ——n: 2;   }      .loader跨度:nth-child (3) {   ——n: 3;   }      .loader跨度:nth-child (4) {   ——n: 4;   }      .loader跨度:nth-child (5) {   ——n: 5;   }

为台阶增加转换排序方向的动画效果:

。装载机跨度{   动画:5 s无限;   }      @keyframes类{   0%、40%、100% {   高度:钙(var (- n) * 1 em);   }      50%、90% {   高度:钙(5 em - (var (- n) - 1) * 1 em);   }   }

下面做小球的动画,用了障眼法,使2个同色小球的交替运动看起来就像一个小球在做往复运动。

用伪元素画出2个小球:

.loader::,   {后.loader::   内容:& # 39;& # 39;;   位置:绝对的;   宽度:1 em;   身高:1 em;   背景颜色:白色;   这个特性:50%;   底部:1 em;   }      {前.loader::   左:0;   }      {后.loader::   左:6 em;   }

增加让小球向上运动的动画效果:

.loader::,   {后.loader::   动画:爬5 s无限;   可见性:隐藏;   }      {后.loader::   animation-delay: 2.5秒;   }      @keyframes爬{   0% {   底部:1 em;   可见性:可见;   }      10% {   底部:2 em;   }      20% {   底部:3他们;   }      30% {   底部:4 em;   }      40% {   底部:5 em;   }      50% {   底部:1 em;   }      50%、100% {   可见性:隐藏;   }   }

在向上运动的同时向两侧运动,形成上台阶的动画效果:

。{前装载机::   ——方向:1;   }      {后.loader::   ——方向:1;   }      @keyframes爬{   0% {   底部:1 em;   左:钙(3 em - 2 * 1.5 em * var(——方向));   可见性:可见;   }      10% {   底部:2 em;   左:钙(3 em - 1 * 1.5 em * var(——方向));   }      20% {   底部:3他们;   左:钙(em - 0 3 * 1.5 em * var(方向));   }      30% {   底部:4 em;   左:钙(3 em + 1 * 1.5 em * var(——方向));   }      40% {   底部:5 em;   左:钙(3 em + 2 * 1.5 em * var(——方向));   }      50% {   底部:1 em;   左:钙(3 em + 2 * 1.5 em * var(——方向));   }      50%、100% {   可见性:隐藏;   }   }

最后,为上台阶的动作增加拟人效果:

@keyframes爬{   0% {   底部:1 em;   左:钙(3 em - 2 * 1.5 em * var(——方向));   可见性:可见;   }      7% {   底部:钙(2 em + 0.3 em);   }      10% {   底部:2 em;   左:钙(3 em - 1 * 1.5 em * var(——方向));   }      17% {   底部:钙(3 em + 0.3 em);   }      20% {   底部:3他们;   左:钙(em - 0 3 * 1.5 em * var(方向));   }      27% {   底部:钙(4 em + 0.3 em);   }      30% {   底部:4 em;   左:钙(3 em + 1 * 1.5 em * var(——方向));   }      37% {   底部:钙(5 em + 0.3 em);   }      40% {   底部:5 em;   左:钙(3 em + 2 * 1.5 em * var(——方向));   }      50% {   底部:1 em;   左:钙(3 em + 2 * 1.5 em * var(——方向));   }      50%、100% {   可见性:隐藏;   }   }

怎么使用纯CSS实现小球跳跃台阶的动画效果