51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

分享一个用CSS3做的雨天雷电动画特效

500.jpg

10月的深圳还是那么DE热(30度+),十一长假,出去浪几天晒糊了,黑了一圈。

mmexport1538983684600.jpg

假后的第一天上班,整个人迷糊迷糊的,也没事情干,分享点东西吧,现做的一个CSS3雨天雷电动画效果,还是"热"的,请拿走,不谢。

思维

每次做动画之前,我们都必须了解动画的帧数,脑子里有自己的思路,然后跟设计师沟通,提取一些动画元素。

比如这次我需要做2个元素的雷电动画,并且是交叉进行,模拟现实中的效果。

我们先来处理第一个,后面一个就很简单了。

图片.png

实现思路:

1、第一帧:雷电图的高度为0,设置50%透明度

2、然后就是显示出图,即高度变成图片的高度

3、第三步很关键,现实中的雷电效果就是劈下来,会闪动几下,所以我们需要设置几帧来实现闪动效果,我这里设置了几个断点。比如在8%、12%, 16%处设置为50%透明度

,在10%,14%处设置透明度为1。这块挺折腾的,大家可以根据情况去调节闪动速度,我提供的仅供参考。

4、雷电逐渐消失,于是我在50%处设置透明图为0,100%处设置高度为图片的高度,透明度也为0,即雷电停止逐渐消失。

5、有人问了,闪动的区间那么小?因为雷电的速度是很快的,所以设置的时间段很短的。

演示

了解完实现思路,就简单了,接下来我们就考验你的技术了,实战开始,这里就不啰嗦,直接上代码,相信大家根据上面讲的,然后对照下很容易理解的哟。

HTML代码:

<div class="banner">
    <div class="lightning">
        <div class="lightning1"><img src="https://www.jiangweishan.com/demo/lightning1.png"></div>   
        <div class="lightning2"><img src="https://www.jiangweishan.com/demo/lightning2.png"></div>   
    </div>  
</div>

核心CSS代码:

@keyframes flash_light {
    0% {
        height: 0px;
        opacity: 0.5;
    }
    7.5% {
        height: 320px;
    }
    8%, 12%, 16% {
        opacity: 0.5;
    }
    10%,  14% {
        opacity: 1;
    }
    50% {
        opacity: 0;
    }
    100% {
        height: 320px;
        opacity: 0;
    }
}
.lightning div img {
    display: block;
    margin: auto;
    width: 100%;
}
.lightning .lightning1 {
    position: absolute;
    right: 70%;
    animation: flash_light 5.7s infinite;
}
.lightning .lightning2 {
    position: absolute;
    left: 70%;
    animation: flash_light 5.1s infinite;
    animation-delay: -2.33s;
}

因为有两道闪电,实现了第一道闪电,第二道闪电调用同一个动画方法,只要做一个延时特效就可以了,我设置延时2.33s播放。

其实你还可以实现更多的闪电效果,核心方法已经分享给大家了,自己去扩展吧。最后还是要把整个DEMO的代码贴出来。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>雷电效果-Web前端之家</title>
    <style type="text/css">
        body{background:#000;}        
        .lightning {
            position: absolute;
            z-index: 1;
            top: 0;
            width: 100%;
        }
        .lightning div {
            position: absolute;
            overflow: hidden;
        }
        @keyframes flash_light {
            0% {
                height: 0px;
                opacity: 0.5;
            }
            7.5% {
                height: 320px;
            }
            8%, 12%, 16% {
                opacity: 0.5;
            }
            10%,  14% {
                opacity: 1;
            }
            50% {
                opacity: 0;
            }
            100% {
                height: 320px;
                opacity: 0;
            }
        }
        .lightning div img {
            display: block;
            margin: auto;
            width: 100%;
        }
        .lightning .lightning1 {
            position: absolute;
            right: 70%;
            animation: flash_light 5.7s infinite;
        }
        .lightning .lightning2 {
            position: absolute;
            left: 70%;
            animation: flash_light 5.1s infinite;
            animation-delay: -2.33s;
        }

    </style>
</head>
<body>
<div class="banner">
    <div class="lightning">
        <div class="lightning1"><img src="https://www.jiangweishan.com/demo/lightning1.png"></div>   
        <div class="lightning2"><img src="https://www.jiangweishan.com/demo/lightning2.png"></div>   
    </div>  
</div>

</body>
</html>

大家可以预览下,是不是很吊呢。

总结

只有想不到,没有做不到;有些效果实现起来,并没有我们想象的那么复杂,如果你能静下心来认真去分析,肯定能实现,难道不是吗?


赞(0)
未经允许不得转载:工具盒子 » 分享一个用CSS3做的雨天雷电动画特效