模糊颗粒感的烟雾效果用 纯CSS 也能实现!

1. 前言

烟雾效果是前端开发中常见的视觉效果之一。本文将介绍如何使用纯CSS实现一种模糊颗粒感的烟雾效果。这种效果看起来非常逼真,实现也相对简单,可用于各种网页的背景、过渡、弹出层和动画等方面。

2. 实现效果

在开始之前,我们需要先明确一下要实现的效果。模糊颗粒感的烟雾效果,是指烟雾看起来非常逼真,且具有一定的模糊颗粒感。

下面是我们要实现的效果:

通过上图,我们可以看到这种烟雾效果是非常逼真的,具有粒子状的感觉,形成一种模糊颗粒感的效果。接下来将介绍如何使用纯CSS实现。

3. 实现步骤

3.1 HTML结构

首先,我们需要先编写一个HTML结构。在这个HTML结构中,我们只需要创建一个div元素,作为放置烟雾效果的容器即可。

<div class="smoke"></div>

3.2 CSS样式

现在我们可以开始着手编写CSS样式了。首先,我们需要设置容器的背景颜色,这里我们用rgba来设置透明度,让烟雾能够逐渐显现出来。

.smoke {

position: fixed;

top: 0;

left: 0;

width: 100%;

height: 100%;

background-color: rgba(0, 0, 0, 0.5);

}

接下来,我们需要给烟雾添加动画效果,让它产生流动的效果。这里我们分成两步来完成。首先,添加一个keyframes动画,做出烟雾随机出现的效果。

@keyframes smoke {

0% {

transform: translate(0, 0) rotate(0);

opacity: 0;

}

100% {

transform: translate(calc(50% - 25px), -100px) rotate(20deg);

opacity: 1;

}

}

在上面的代码中,我们定义了一个从0%到100%的动画,将烟雾的初始状态从透明到完全显示,并且随机改变其位置和旋转角度。

然后,我们将这个动画应用到容器中,并设置其时间为10s。

.smoke::after {

content: "";

position: absolute;

top: calc(100% - 40px);

left: calc(50% - 20px);

width: 50px;

height: 50px;

border-radius: 50%;

background-color: rgba(255, 255, 255, 0.2);

-webkit-animation: smoke 10s linear infinite;

animation: smoke 10s linear infinite;

}

在上面的代码中,我们设置了一个::after伪元素,用于显示烟雾。我们将其定位到容器的底部中央,并设置50px的宽度和高度,使得它看起来像一个圆形的烟雾球。

最后,我们还需要为烟雾效果添加一些阴影效果,使其看起来更逼真。

.smoke::before, .smoke::after {

box-shadow: 0 0 40px 20px rgba(255, 255, 255, 0.2);

}

在上面的代码中,我们使用box-shadow为烟雾球添加了一层光晕。

完整的CSS代码如下:

.smoke {

position: fixed;

top: 0;

left: 0;

width: 100%;

height: 100%;

background-color: rgba(0, 0, 0, 0.5);

}

.smoke::before, .smoke::after {

box-shadow: 0 0 40px 20px rgba(255, 255, 255, 0.2);

}

.smoke::after {

content: "";

position: absolute;

top: calc(100% - 40px);

left: calc(50% - 20px);

width: 50px;

height: 50px;

border-radius: 50%;

background-color: rgba(255, 255, 255, 0.2);

-webkit-animation: smoke 10s linear infinite;

animation: smoke 10s linear infinite;

}

@keyframes smoke {

0% {

transform: translate(0, 0) rotate(0);

opacity: 0;

}

100% {

transform: translate(calc(50% - 25px), -100px) rotate(20deg);

opacity: 1;

}

}

4. 总结

在本文中,我们介绍了如何使用纯CSS实现一种模糊颗粒感的烟雾效果。通过添加一些动画和阴影效果,我们可以轻松地创建出一个逼真的烟雾效果。这种效果可以应用于各种网页的背景、过渡、弹出层和动画等方面,具有很大的灵活性和可扩展性。