CSS3学习记录之loading动画

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

效果:http://1.huizit1.applinzi.com/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即可。

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
    .box{
        width: 100%;
        padding: 3%;
        /*margin: 100px auto;*/
        box-sizing: border-box;
        overflow: hidden;
        /*background-color: #ccc;*/
    }
    .loader{
        width: 30%;
        height: 200px;
        /*background-color: #fff;*/
        border: 1px solid #ccc;
        float: left;
        margin-right: 3%;
        box-sizing: border-box;
        position: relative;
        display: flex;
        align-items: center;
        justiy-content: center;
    }
    @keyframes loading-1{
        0%{
            transform: rotate(0deg);
        }
        50%{
            transform: rotate(180deg);
        }
        100%{
            transform: rotate(360deg);
        }
    }
    .loading_1{
        width: 35px;
        height: 35px;
        margin: auto;
        border-radius: 50%;
        position: relative;
        background-color: #000;
        /*display: block;*/
        background: linear-gradient(transparent 0%, transparent 70%, #333 70%, #333 100%);
        animation: loading-1 .2s linear 0s infinite;
    }
    @keyframes loading-2{
        0%{
            transform: scaleY(1);
        }

        50%{
            transform: scaleY(0.4);
        }

        100%{
            transform: scaleY(1);
        }
    }
    .loading_2{
        width: auto;
        height: 35px;
        margin: auto;
        /*background-color: #000;*/
    }
    .loading_2 i{
        width: 4px;
        height: 35px;
        border-radius: 2px;
        margin-right: 4px;
        margin-left: 4px;
        background-color: #000;
        float: left;
    }
    .loading_2 i:nth-child(1){
        animation: loading-2 1s ease-in .1s infinite;
    }
    .loading_2 i:nth-child(2){
        animation: loading-2 1s ease-in .2s infinite;
    }
    .loading_2 i:nth-child(3){
        animation: loading-2 1s ease-in .3s infinite;
    }
    .loading_2 i:nth-child(4){
        animation: loading-2 1s ease-in .4s infinite;
    }
    .loading_2 i:nth-child(5){
        animation: loading-2 1s ease-in .5s infinite;
    }
    .loading_2 i:nth-child(6){
        animation: loading-2 1s ease-in .6s infinite;
    }
    @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;
        }
    }
    .loading_3{
        /*padding: 2px;*/
        width: 30px;
        height: 30px;
        margin: auto;
        background-color: #000;
        position: relative;
    }
    .loading_3 i{
        width: 8px;
        height: 8px;
        border-radius: 4px;
        position: absolute;
        /*clear: both;*/
        display: block;
        background-color: black;
    }
    .loading_3 i:nth-child(1){
        top: 25px;
        left: 0px;
        background: red;
        animation: loading-3 .8s ease-in .1s infinite;
    }
    .loading_3 i:nth-child(2){
        top: 17px;
        left: 17px;
        background: #ff6600;
        animation: loading-3 .8s ease-in .2s infinite;
    }
    .loading_3 i:nth-child(3){
        top: 0px;
        left: 25px;
        background: yellow;
        animation: loading-3 .8s ease-in .3s infinite;
    }
    .loading_3 i:nth-child(4){
        top: -17px;
        left: 17px;
        background: green;
        animation: loading-3 .8s ease-in .4s infinite;
    }
    .loading_3 i:nth-child(5){
        top: -25px;
        left: 0px;
        background: #00ffff;
        animation: loading-3 .8s ease-in .5s infinite;
    }
    .loading_3 i:nth-child(6){
        top: -17px;
        left: -17px;
        background: blue;
        animation: loading-3 .8s ease-in .6s infinite;
    }
    .loading_3 i:nth-child(7){
        top: 0px;
        left: -25px;
        background: #ff00ff;
        animation: loading-3 .8s ease-in .7s infinite;
    }
    .loading_3 i:nth-child(8){
        top: 17px;
        left: -17px;
        background: #ff0099;
        animation: loading-3 .8s ease-in .8s infinite;
    }
</style>
<body>
    <div class="box">
        <div class="loader">
            <i class="loading_1"></i>
        </div>
        <div class="loader">
            <div class="loading_2">
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
            </div>
        </div>
        <div class="loader">
            <div class="loading_3">
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
                <i></i>
            </div>
        </div>
    </div>
</body>
</html>
时间: 2024-12-10 03:47:40

CSS3学习记录之loading动画的相关文章

HTML5与CSS3权威指南之CSS3学习记录

title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) 官方网站: 华章图书 书中所有代码下载链接: 链接:http://pan.baidu.com/s/1c0oGMn2 密码:f7zt 选择器 属性选择器 [att=val]选择器--选择属性att值为val的元素 [att*=val]选择器--选择属性att值包含val的元素 [att^=val]选择器--选

CSS3学习总结3-3D与动画

前言:这是篇CSS3中关于3D效果与动画相关的内容. (1)在CSS3的3D效果中,需要结合透视perspective的属性才能看到3d的效果,这个属性在屏幕上实现了元素近大远小的效果,所以要使用CSS3的3d相关属性,需要记得写perspective. (2)在CSS3的3d坐标系与数学中的坐标系有所区别,主要是在y轴正方向的规定上. x轴正方向:从左往右 y轴正方向:从上至下 z轴正方向:从里至外 旋转 在C3的2D变换中,rotate代表了元素围绕Z轴旋转一个角度,3d中还有围绕X和Y轴旋

酷炫的css3图标loading动画效果代码

css3 svg图标制作环形loading加载动画特效 绿色的css3动画加载图标代码 css3加载动画制作loading加载Android动画效果 jQuery css3预加载动画制作css3动画图标页面加载效果 css3加载动画特效制作css3 win8加载动画特效 css3加载动画效果制作loading动画效果代码 8种超炫css3加载动画代码_css3 loading动画效果代码 5个CSS3加载动画_css3网页加载动画图标下载 css3 Loading加载动画制作动态Loading阶

css3实现简易loading动画

css3已经火的不行,我还很淡(dan)定(teng)地在啃着css2,表示很惭愧啊 周末抽点时间看了下loading效果的实现,开始看到css3有点头大,感觉是不是向外面说的那样每一次标准的发布都像是在学习一门新语言呢,称有些惶恐... 说完废话了....开始show代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&

带缺口的圆环CSS3 Loading动画

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

简单的CSS3 Loading动画

最终效果如图一,gif图片稍微有点卡顿,事实上代码在浏览器里执行得很流畅.这里面用到的css3技术非常简单,分别是border-radius.伪元素.css3关键帧以及animation动画. 首先整理一下大概的思路:整个圆分为AB两部分,左右都是半圆,上面盖了一个背景色为白色的小圆,如右图,简单布局如下: <style> .loading{margin:100px auto; width: 8em; height: 8em; position: relative;} .loading .pr

利用css3的animation实现点点点loading动画效果(二)

box-shadow实现的打点效果 简介 box-shadow理论上可以生成任意的图形效果,当然也就可以实现点点点的loading效果了. 实现原理 html代码,首先需要写如下html代码以及class类名: 订单提交中<span class="dotting"></span> css代码 .dotting { display: inline-block; min-width: 2px; min-height: 2px; box-shadow: 2px 0 c

css3 loading动画练习

以下为css3制作的loading动画. HTML为: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>css3加载动画</title> 6 <link rel="stylesheet" t

30种CSS3炫酷页面预加载loading动画特效

这是一组效果非常炫酷的CSS3页面预加载loading动画特效.该特效共有30种不同的loading效果.所有的加载动画都是使用CSS3来完成,jQurey代码只是用于隐藏加载动画.当你点击页面的任何一个地方时,loading动画就会被隐藏. 这30种loading动画分为3组:方形加载动画特效.圆形加载动画特效和长条形加载动画特效.每一种效果都有一个单独的页面,你可以对应查看每种效果的CSS代码. 效果演示:http://www.htmleaf.com/Demo/201504151683.ht