纯CSS做一个烟花绽放动画「代码示例」

1. 烟花绽放动画介绍

烟花绽放是新年庆祝活动中的经典场景,也是动画制作中的重要元素。我们可以利用CSS来实现一个简单的烟花绽放动画,该动画用纯CSS实现,不需要任何JavaScript或其他动画库的支持。

2. 动画制作思路

在CSS中,我们可以通过关键帧(Keyframes)和动画(Animation)属性来制作动画效果。经过分析,我们可以发现烟花绽放的整体过程可以分为以下几个阶段:

烟花发射阶段:烟花从发射点向上飞行。

烟花爆炸阶段:烟花在空中突然爆炸,产生火花和烟雾。

火花消散阶段:火花逐渐消失,烟雾逐渐散开。

因此,我们可以按照以上流程来设计CSS动画。

3. 代码实现

3.1 HTML结构

我们可以在HTML文件中添加一个<div>元素,并为其添加一个类名。该元素将作为烟花效果的容器,用于承载整个动画效果。

<div class="firework"></div>

3.2 CSS代码

接下来我们需要为该<div>元素添加CSS样式。以下是CSS代码的主要内容:

/* 设置firework容器样式 */

.firework {

position: relative;

width: 10px;

height: 10px;

margin: 0 auto;

background-color: #fff;

}

/* 设置firework容器内元素样式 */

.firework:after,

.firework:before {

content: "";

display: block;

position: absolute;

width: 100%;

height: 100%;

}

/* 设置发射光点 */

.firework:before {

border-radius: 50%;

background-color: #F32D2D;

box-shadow: 0 0 20px #F32D2D;

animation: lightDot 1s infinite;

}

/* 设置烟花爆炸效果 */

.firework:after {

background-color: #F7931E;

transform: scale(0);

animation: explode 1s;

}

/* 定义光点动画 */

@keyframes lightDot {

0% {

box-shadow: 0 0 20px #F32D2D;

opacity: 1;

}

100% {

box-shadow: 0 0 50px #F32D2D;

opacity: 0;

}

}

/* 定义爆炸动画 */

@keyframes explode {

0% {

transform: scale(0);

}

20% {

transform: scale(1);

}

40% {

transform: scale(1.5);

}

50% {

transform: scale(2);

opacity: 1;

}

100% {

transform: scale(3);

opacity: 0;

}

}

4. 代码解析

4.1 设置firework容器样式

在CSS中,我们设置了.firework类的一些样式。其中,position属性设置为relative,使得元素相对于页面定位。这样,在设置其内部元素的绝对定位样式之后,这些元素就可以根据.firework容器来定位。

width和height属性分别设置了元素的宽度和高度。我们可以将其设置为一个较小的值,比如10px,这样可以避免元素过于占据页面空间。

margin属性将元素的上下左右外边距设为auto,使其居中对齐。background-color属性设置了元素背景颜色为白色,这是为了隐藏其内部元素。

4.2 设置firework容器内元素样式

在.firework容器内部,我们为其添加了两个伪元素::before和:after。

我们为这两个伪元素设置了相同的CSS样式,包括content、display、position、width和height属性。其目的是使得这两个伪元素的尺寸和位置与容器相同,使得它们可以充满整个.firework容器。

4.3 设置发射光点

在伪元素:before中,我们使用border-radius属性将其圆形化,并设置了一个红色的背景色和红色的阴影。其中,box-shadow属性为元素添加了一个红色的发光效果。

animation属性引用了名为"lightDot"的动画,这个动画将使:before元素不停地闪烁,形成一个持续不断的发光效果。

4.4 设置烟花爆炸效果

伪元素:after的背景颜色设置为橙色,并使用了transform: scale(0)将其缩小。这样,在动画开始的时候,它只是一个很小的圆形,看起来像是火花的种子。

我们还使用了一个名为"explode"的动画,该动画将使伪元素:after沿着X轴和Y轴不断放大,同时透明度逐渐降低,最终消失不见。这个动画使得火花看起来像是猛烈爆炸后逐渐消散的样子。

5. 总结

CSS可以用来实现很多有趣的动画效果,包括这个烟花绽放动画。通过对关键帧和动画属性的理解和运用,我们可以很容易地制作出类似的动画效果。这对于提高我们的CSS技能和开发新型动画非常有帮助。