CSS3学习记录之loading动画
阅读原文时间:2023年08月11日阅读:1

loading动画就是在加载一些网页内容的时候呈现出来的小动画,记录一下学到的几种loading动画:

效果:http://39.105.101.122/myhtml/CSS/Loading/loading.html

第一个是一个圆形的一部分在旋转,实现原理:

  在相应的位置添加一个 i 标签,然后设置width和height(值一样),然后添加border-radius:50%,此时这个i标签呈现出来的是一个圆,为了和图示效果一样,需要把这个圆遮住多半个,用background: linear-gradient(transparent 0%, transparent 70%, #333 70%, #333 100%);这样用背景过渡的方法就让上面70%透明掉了。然后添加动画:0%{rotate(0deg)} 50%{rotate(180deg)} 100%{rotate(360deg)}, animation: loading-1 .2s linear 0s infinite;//循环播放。

第二个是几个竖线在不停的伸缩,实现原理:

  在相应的位置添加若干个 i 标签,这里添加了6个,i 标签是行内元素,因此他们可以在一行内,设置margin-right,width为4像素,height可以自己随便定义。然后添加颜色等属性。然后定义一个动画。

@keyframes loading-2{
0%{
transform: scaleY(1);
}

    50%{  
        transform: scaleY(0.4);  
    }

    100%{  
        transform: scaleY(1);  
    }  
}

0%和100%的时候值要一样,这样才能平滑过渡。50%的时候可以伸缩相应的值。然后给每个 i 标签添加动画属性:animation: loading-2 1s ease-in .1s infinite;

一个动画循环是1s,0.1s延迟,循环播放,每个 i 标签的动画延迟时间递增一点,显示的结果就会呈现出波浪的效果。

第三个是围成一个圆的8个小圆在不停从大变小同时颜色由深变浅,这个原理和第二个是相同的,先添加8个 i 标签,设置position:absolute,width、height、border-radius、颜色、它的父级div不设置width和height,这样没有宽度和高度的父级div的左上角也是居中的,然后给每个 i 标签设置相应的top和left,也就是围着中心点均匀绕开。这样就完成了布局。然后添加动画:

@keyframes loading-3{
0%{
/*background: linear-gradient(transparent 0%);*/
opacity: 1;
transform: scale(2);
}
100%{
/*background: linear-gradient(transparent 0%,transparent 100%);*/
transform: scale(0.5);
opacity: 0;
}
}

在0%的时候opacity:1(不透明度是1,即完全不透明),scale(2),大小为原大小的两倍,100%的时候opacity为0,完全透明,大小为原大小的一半,这样就能实现一边变小同时颜色变淡的效果。然后给 i 标签添加:animation: loading-3 .8s ease-in .1s infinite;每个 i 标签的延迟时间是递增的,并且递增到0.8s和一个循环的动画时间一样,这样才能保证只有一个最大的,后面的都是逐渐缩小的,如果想让在打开页面之后动画就是播放着的,可以给第一个延迟时间改成-0.8s,后面的递增0.1s即可。

代码:



Document



手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章