手把手教你用纯CSS实现冒泡加载

619 阅读3分钟

前言

周末了,也没有闲下来,这次给大家带来一个简单的冒泡加载特效。冒泡排序大家都听过,冒泡加载可能是第一次见吧。先给大伙看个静态图。

image.png

效果预览

然后在码上掘金中看看它的动态效果。

看完了基本效果,我们现在来实现一下它吧,关于它的实现整体来说并不难,跟着我进入到这个特效的开发中吧。

HTML结构

首先我们来搭建一下基本的HTML结构,相关代码如下。

<div class="container">
        <div class="box">
            <div class="circle"></div>
            <div class="circle"></div>
        </div>
        <h2>Loading...</h2>
    </div>

这是一段简单的HTML代码,用于显示一个加载动画。主要由一个容器元素container组成,在该元素中包含一个盒子元素box和一个标题元素<h2>

盒子元素内部有两个圆圈元素circle,这两个圆圈元素可以用来表示加载的进度。但是在我们这里实现的效果中只是静态地显示了两个圆圈。

CSS样式

完成了基础结构搭建,现在来为这些元素添加样式。首先给容器元素加上CSS样式,相关代码如下。

.container{
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}
.container .box{
    position: relative;
    width: 200px;
    height: 200px;
    animation: rotatBox 10s linear infinite;
}

container容器使用flex布局,将子元素水平和垂直居中,并按照垂直方向排列。其中包含的box元素的宽度和高度都为200px。这里最主要的是在box元素中设置了一个名为rotatBox的动画,持续时间为10秒,动画效果为线性变化,且无限循环播放。紧接着我们来看看这个动画是如何编写的。

@keyframes rotatBox {
    0%{
        transform: rotate(0deg);
    }
    100%{
        transform: rotate(360deg);
    }
}

在这个关键帧动画中,使用了两个关键帧,分别是0%100%0% 代表动画开始时的状态,100% 代表动画结束时的状态。

0% 关键帧中,通过transform属性设置元素的旋转角度为0度,表示动画开始时元素不发生旋转。在100% 关键帧中,通过transform属性设置元素的旋转角度为360度,表示动画结束时元素以顺时针方向旋转360度,即一周。

这样,当应用该关键帧动画到一个元素时,元素会从初始状态开始,逐渐旋转到360度的状态,形成一个旋转的动画效果。

然后接下来在circle元素中也定义了一个动画。动画的持续时间为5秒,采用线性的动画曲线,并且无限循环播放。

.container .box .circle{
    ......
    animation: animate 5s linear infinite;
}
@keyframes animate {
    0%{
        transform: scale(1);
        transform-origin: left;
    }
    50%{
        transform: scale(0);
        transform-origin: left;
    }
    50.01%{
        transform: scale(0);
        transform-origin: right;
    }
    100%{
        transform: scale(1);
        transform-origin: right;
    }
}

在这个关键帧动画中,我们定义了四个关键帧:

  1. 0%关键帧:将元素的缩放比例设置为1,缩放原点设置为左侧。
  2. 50%关键帧:将元素的缩放比例设置为0,缩放原点设置为左侧。
  3. 50.01%关键帧:将元素的缩放比例保持为0,但是缩放原点设置为右侧。这个关键帧的作用是在动画的中间位置瞬间改变缩放原点。
  4. 100%关键帧:将元素的缩放比例恢复为1,缩放原点设置为右侧。

这样,当应用这个关键帧动画到一个元素时,该元素会从正常大小开始,逐渐缩小到消失,然后在动画的中间位置瞬间改变缩放原点,最后再逐渐恢复到正常大小。

完成这些,就可以实现上面看到的冒泡加载效果了。

总结

以上就是冒泡加载整个效果的实现过程了,整体来说比较简单,完整代码可以在码上掘金中查看。大家可以去把代码拷贝下来亲自试一试效果,相信会有不一样的发现。