不二如是 发表于 2017-3-4 14:33:29

0 0 6 2 - 三点唤醒Loading动画 - 2.0

本帖最后由 不二如是 于 2021-8-11 09:37 编辑

在61我们介绍了“拖尾”的玩法。

算是animation的@keyframes load-effect简单玩法,这次分享一个更有意思的~

对了,安利一下,border-radius不会的,请点这里

本帖的重点是“box-shadow”高级玩法,入门请看 0 0 3 3 - Shadow之块状元素阴影


本次演示单位用em,1em = 16px。

上代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3帧动画</title>
    <style type="text/css">
      body{
            background: #000;
      }
      .load{
            font-size: 33px;
            width: 1em;
            height: 1em;
            border-radius: 50%;
            position: relative;
            text-indent: -8888em;

            box-shadow: 3em 2em 0 1.5em #FFF,6em 2em 0 0 #FFF,9em 2em 0 -0.01em #FFF;
      }

    </style>
</head>
<body>
    <div class="load">鱼C-不二如是</div>
</body>
</html>
效果图:


不是说好了box-shadow是负责设置阴影的吗?!

那这三个圈,咋来的?

先憋着急,为load添加一个背景色


打个广告,看到WebStorm的编辑器的性感了嘛?!欲知更多详情,请点这里

效果图:


其实这三个白点仍然是box-shadow生成的三个阴影。

只不过是颜色是白色,并且由于本尊通过border-radius设置为圆形,他们也是圆形了。

box-shadow的有5个属性值,所以干了五件事:

☆第一个参数(3em,6em,9em),代表距离左侧的水平位移距离。

☆第二个参数(2em,2em,2em),代表距离上侧的纵向移动距离。

☆第三个参数(0,0,0),代表清晰度,0则没有模糊效果。

☆第四个参数(1.5em,0,-0.01em),代表圆点大小,1.5em表示将阴影外扩3/2宽度。

☆第五个参数(#FFF,#FFF,#FFF),设置颜色。

这四个参数就是本帖的重点!


现在只要在@keyframe load-effect{}中多次设置box-shadow不就可以产生渐变效果了吗?!

注释掉box-shadow,完成代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>n帧动画</title>
    <style type="text/css">
      body{
            background: #000;
      }
      .load{
            font-size: 33px;
            width: 1em;
            height: 1em;
            border-radius: 50%;
            position: relative;
            text-indent: -8888em;

            /*box-shadow: 3em 2em 0 1.5em #FFF,6em 2em 0 0 #FFF,9em 2em 0 -0.01em #FFF;*/
            /*background: #8C0044;*/
            animation: load-effect 0.99s infinite linear;

      }

      @keyframes load-effect {
            0%{
                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
            }
            25%{
                box-shadow: 3em 2em 0 0.5em #FCC,6em 2em 0 0 #9F9,9em 2em 0 -0.5em #CCF,12em 2em 0 1em #F7F;
            }
            50%{
                box-shadow: 3em 2em 0 0 #FCC,6em 2em 0 -0.5em #9F9,9em 2em 0 1em #CCF,12em 2em 0 0.5em #F7F;
            }
            75%{
                box-shadow: 3em 2em 0 -0.5em #FCC,6em 2em 0 1em #9F9,9em 2em 0 0.5em #CCF,12em 2em 0 0 #F7F;
            }
            100%{
                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
            }
      }

    </style>
</head>
<body>
    <div class="load">鱼C-不二如是</div>
</body>
</html>
效果图:


在animation动画中,分别定义0%、25%、50%、75%、100%五种动画状态。

顺便多加了多加了个点,4个点颜色各不相同。

同一行,不同列的大小变化都遵循:

->1->0.5em->0->-0.5em->

每个值在同一行只出现一次,列可以重复。

相信聪明如你,一点就透~

这位鱼油,如果喜欢本帖子,请订阅 专辑-->(传送门)(不喜欢更要订阅{:10_278:} )

官方 Web 课程:

https://www.bilibili.com/video/BV1QW411N762

shishunfu 发表于 2017-5-12 15:17:46

交作业
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>3帧动画</title>

        <style type="text/css">
                body{
                        background: #000;
                }
                .load{
                        font-size: 33px;
                        width: 1em;
                        height: 1em;
                        border-radius: 50%;
                        position: relative;
                        animation: load-effect 0.99s infinite linear;
                        /*box-shadow: 3em 2em 0 1.5em #FFF,6em 2em 0 0 #FFF,9em 2em 0 -0.01em #FFF;*/
/*        ☆第一个参数,代表距离左侧的水平位移距离。
        ☆第二个参数,代表距离上侧的纵向移动距离。
        ☆第三个参数,代表清晰度,0则没有模糊效果。
        ☆第四个参数,代表圆点大小,1.5em表示将阴影外扩3/2宽度。
        ☆第五个参数,设置颜色。
*/
                       
                }
                @keyframes load-effect {
                        0%{
                                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
                               
                        }
                        25%{
                                box-shadow: 3em 2em 0 0.5em #FCC,6em 2em 0 0 #9F9,9em 2em 0 -0.5em #CCF,12em 2em 0 1em #F7F;
                        }
                        50%{
                                box-shadow: 3em 2em 0 0 #FCC,6em 2em 0 -0.5em #9F9,9em 2em 0 1em #CCF,12em 2em 0 0.5em #F7F;
                        }
                        75%{
                                box-shadow: 3em 2em 0 -0.5em #FCC,6em 2em 0 1em #9F9,9em 2em 0 0.5em #CCF,12em 2em 0 0 #F7F;
                        }
                        100%{
                                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
                        }
                }
        </style>
</head>
<body>
<div class="load"></div>
</body>
</html>

aswyamato1989 发表于 2017-8-6 08:13:19

交作业!

隨鈊乄鎍慾 发表于 2018-7-2 22:17:54

交作业:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3帧动画</title>
    <style type="text/css">
      body{
            background: #000;
      }
      .load{
            font-size: 33px;
            width: 1em;
            height: 1em;
            border-radius: 50%;
            position: relative;
            text-indent: -8888em;
            /*
            ☆第一个参数(3em,6em,9em),代表距离左侧的水平位移距离。
            ☆第二个参数(2em,2em,2em),代表距离上侧的纵向移动距离。
            ☆第三个参数(0,0,0),代表清晰度,0则没有模糊效果。
            ☆第四个参数(1.5em,0,-0.01em),代表圆点大小,1.5em表示将阴影外扩3/2宽度。
            ☆第五个参数(#FFF,#FFF,#FFF),设置颜色。
            */
            animation:load-effect 0.99s infinite linear;

      }
      @keyframes load-effect{
            0%{
                box-shadow: 3em 2em 10px 1em #FCC,6em 2em 10px 0.5em #9F9,9em 2em 10px 0 #CCF,12em 2em 10px -0.5em #F7F;
            }
            25%{
                box-shadow: 3em 2em 10px 0.5em #FCC,6em 2em 10px 0 #9F9,9em 2em 10px -0.5em #CCF,12em 2em 10px 1em #F7F;
            }
            50%{
                box-shadow: 3em 2em 10px 0 #FCC,6em 2em 10px -0.5em #9F9,9em 2em 10px 1em #CCF,12em 2em 10px 0.5em #F7F;
            }
            75%{
                box-shadow: 3em 2em 10px -0.5em #FCC,6em 2em 10px 1em #9F9,9em 2em 10px 0.5em #CCF,12em 2em 10px 0 #F7F;
            }
            100%{
                box-shadow: 3em 2em 10px 1em #FCC,6em 2em 10px 0.5em #9F9,9em 2em 10px 0 #CCF,12em 2em 10px -0.5em #F7F;
            }
      }
</style>
</head>

<body>
<div class="load">鱼C-不二如是</div>
</body>
</html>

STmove 发表于 2018-7-27 13:23:06

webstorm确实很强大,两天就帮我养成了忘写分号的好习惯{:10_250:}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>0062-3帧动画</title>
    <style type="text/css">
      body{
            background: #000;
      }
      .load{
            font-size: 33px;/*都™ -8888em了,还要设置字体大小干嘛*/
            width: 1em;
            height: 1em;
            border-radius: 50%;
            position: relative;
            text-indent: -8888em;
            /*background: #45ccd6;*/
            /*box-shadow: 3em 2em 0 1.5em #FFF,6em 2em 0 0 #FFF,9em 2em 0 -0.3em #FFF;*/
            animation: loading 1s infinite linear;
      }
      @keyframes loading
      {
            0%
            {
                box-shadow: 3em 2em 0 0.2em #FCC,6em 2em 0 0.2em #9F9,9em 2em 0 0.2em #CCF,12em 2em 0 0.2em #F7F;
            }
            25%
            {
                box-shadow: 3em 2em 0.5em 1em #FCC,6em 2em 0 0.2em #9F9,9em 2em 0 0.2em #CCF,12em 2em 0 0.2em #F7F;
            }
            50%
            {
                box-shadow: 3em 2em 0 0.2em #FCC,6em 2em 0.5em 1em #9F9,9em 2em 0 0.2em #CCF,12em 2em 0 0.2em #F7F;
            }
            75%
            {
                box-shadow: 3em 2em 0 0.2em #FCC,6em 2em 0 0.2em #9F9,9em 2em 0.5em 1em #CCF,12em 2em 0 0.2em #F7F;
            }
            100%
            {
                box-shadow: 3em 2em 0 0.2em #FCC,6em 2em 0 0.2em #9F9,9em 2em 0 0.2em #CCF,12em 2em 0.5em 1em #F7F;
            }
      }

    </style>
</head>
<body>
<div class="load">鱼C-STmove</div>
</body>
</html>

MSK 发表于 2018-7-28 21:38:36

交作业
<!DOCTYPE html>
<html>
<head>
        <title>三点打开loading</title>
        <meta charset="utf-8">
        <style type="text/css">
                @keyframes loading{
                        0%{
                                box-shadow: 2em 2em 0 -0.5em #fff, 8em 2em 0 0em #fff, 14em 2em 0 0.5em #fff;
                        }
                        12.5%{
                                box-shadow: 2em 2em 0 0em #fff, 8em 2em 0 0.5em #fff, 14em 2em 0 1em #fff;
                        }
                        25%{
                                box-shadow: 2em 2em 0 0.5em #fff, 8em 2em 0 1em #fff, 14em 2em 0 1.5em #fff;
                        }
                        37.5%{
                                box-shadow: 2em 2em 0 1em #fff, 8em 2em 0 1.5em #fff, 14em 2em 0 1em #fff;
                        }
                        50%{
                                box-shadow: 2em 2em 0 1.5em #fff, 8em 2em 0 1em #fff, 14em 2em 0 0.5em #fff;
                        }
                        62.5%{
                                box-shadow: 2em 2em 0 1em #fff, 8em 2em 0 0.5em #fff, 14em 2em 0 0em #fff;
                        }
                        75%{
                                box-shadow: 2em 2em 0 0.5em #fff, 8em 2em 0 0em #fff, 14em 2em 0 -0.5em #fff;
                        }
                        87.5%{
                                box-shadow: 2em 2em 0 0em #fff, 8em 2em 0 -0.5em #fff, 14em 2em 0 0em #fff;
                        }
                        100%{
                                box-shadow: 2em 2em 0 -0.5em #fff, 8em 2em 0 0em #fff, 14em 2em 0 0.5em #fff;
                        }
                }
                body{
                        background: #000;
                }
                .load{
                        box-sizing: border-box;
                        width: 2.0em;
                        height: 2.0em;
                        border-radius: 50%;
                        background: #f0f;
                        text-indent: -999px;
                        box-shadow: box-shadow: 2em 2em 0 -0.5em #fff, 8em 2em 0 0em #fff, 14em 2em 0 0.5em #fff;
                        animation: loading 1.3s infinite linear;
                }
        </style>
</head>
<body>
        <div class="load">loading</div>
</body>
</html>

你在意在便在 发表于 2019-11-6 22:23:43

lei 了 lei 了 {:10_266:}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3帧动画</title>
<style type="text/css">
* {
      margin:0;
      padding:0;
}
body {
      background: #000;
}
.load {
      font-size: 33px;
      width: 1em;
      height: 1em;
      border-radius: 50%;
      position: relative;
      text-indent: -8888em;
      animation:flash 5s infinite linear;
}
@keyframes flash{
      0% {
                box-shadow:3em 2em 0    1em rgba(156,136,255,1),
                           6em 2em 00.5em rgba(0,168,255,1),
                           9em 2em 0    0em rgba(232,65,24,1),
                        12em 2em 0 -0.5em rgba(76,209,55,1)
      }               
      25% {
                box-shadow:3em 2em 0   0.5em rgba(156,135,255),
                           6em 2em 0   0em rgba(0,168,255),
                           9em 2em 0-0.5em rgba(232,65,24),
                        12em 2em 0   1em rgba(76,209,55)
      }      
      50% {
                box-shadow:3em 2em 0   0em rgba(156,136,255),
                           6em 2em 0-0.5em rgba(0,168,255),
                           9em 2em 0   1em rgba(232,65,24),
                        12em 2em 0   0.5em rgba(76,209,55)
      }
      75% {
                box-shadow:3em 2em 0-0.5em rgba(156,136,255),
                           6em 2em 0   1em rgba(0,168,255),
                           9em 2em 0   0.5em rgba(232,65,24),
                        12em 2em 0   0em rgba(76,209,55)
      }
      100% {
                box-shadow:3em 2em 0   1em rgba(156,136,255),
                           6em 2em 0   0.5em rgba(0,168,255),
                           9em 2em 0   0em rgba(232,65,24),
                        12em 2em 0-0.5em rgba(76,209,55)
      }
}
</style>
</head>
<body>
    <div class="load">让编程改变世界</div>
</body>
</html>

suweixuan1998 发表于 2020-1-11 13:34:15

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>n帧动画</title>
    <style type="text/css">
      body{
            background: #000;
      }
      .load{
            font-size: 33px;
            width: 1em;
            height: 1em;
            border-radius: 50%;
            position: relative;
            text-indent: -8888em;

            /*box-shadow: 3em 2em 0 1.5em #FFF,6em 2em 0 0 #FFF,9em 2em 0 -0.01em #FFF;*/
            /*background: #8C0044;*/
            animation: load-effect 0.99s infinite linear;

      }

      @keyframes load-effect {
            0%{
                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
            }
            25%{
                box-shadow: 3em 2em 0 0.5em #FCC,6em 2em 0 0 #9F9,9em 2em 0 -0.5em #CCF,12em 2em 0 1em #F7F;
            }
            50%{
                box-shadow: 3em 2em 0 0 #FCC,6em 2em 0 -0.5em #9F9,9em 2em 0 1em #CCF,12em 2em 0 0.5em #F7F;
            }
            75%{
                box-shadow: 3em 2em 0 -0.5em #FCC,6em 2em 0 1em #9F9,9em 2em 0 0.5em #CCF,12em 2em 0 0 #F7F;
            }
            100%{
                box-shadow: 3em 2em 0 1em #FCC,6em 2em 0 0.5em #9F9,9em 2em 0 0 #CCF,12em 2em 0 -0.5em #F7F;
            }
      }

    </style>
</head>
<body>
    <div class="load">鱼C-不二如是</div>
</body>
</html>

小脑斧 发表于 2020-3-18 22:11:49


页: [1]
查看完整版本: 0 0 6 2 - 三点唤醒Loading动画 - 2.0