千家信息网

如何使用css实现烟雾效果

发表于:2024-10-29 作者:千家信息网编辑
千家信息网最后更新 2024年10月29日,这篇文章主要介绍了如何使用css实现烟雾效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用css实现烟雾效果文章都会有所收获,下面我们一起来看看吧。仔细观察烟雾效
千家信息网最后更新 2024年10月29日如何使用css实现烟雾效果

这篇文章主要介绍了如何使用css实现烟雾效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用css实现烟雾效果文章都会有所收获,下面我们一起来看看吧。

仔细观察烟雾效果,有两个比较重要的特点:

  • 模糊效果

  • 颗粒感

首先看模糊效果,想到模糊,大部分同学首先都会想到使用 filter: blur() 。

当然没错,不过在 CSS 中,除了滤镜,我们还能使用一类其他手段去模拟模糊的效果。

纯 CSS 实现烟雾动画

我们首先来看这样一个效果:

假设,我们有这样一个字符:

C

我们仅仅是通过 text-shadow + opacity 的变化,就能模拟烟雾的效果:

span {  text-shadow: 0 0 0 whitesmoke;  animation: smoky 5s;}@keyframes smoky {  to {    text-shadow: 0 0 20px whitesmoke;    opacity: 0;  }}

在上述的基础上,我们可以加上位移、旋转、缩放,稍微改造一下上述代码,添加一些 transform 变换:

span {  text-shadow: 0 0 0 whitesmoke;  animation: smoky 5s;}@keyframes smoky {  to {    transform:      translate3d(200px, -80px, 0)      rotate(-40deg)      skewX(70deg)      scale(1.5);    text-shadow: 0 0 20px whitesmoke;    opacity: 0;  }}

就可以得到如下效果:

叠加了 transform 之后,就很有一个字被吹跑,变成烟雾的感觉。在此基础之上,我们只需要将多个字放在一起,利用 animation-delay 顺序控制每个字触发动画效果,即可得到上述的完整烟雾效果。

伪代码如下:

C S S // ...
// ... 上述所有 CSS 代码@for $item from 1 through 21 {  span:nth-of-type(#{$item}){     animation-delay: #{(($item/10))}s;   }}

借助 SVG feturbulence 滤镜实现烟雾效果

上述的烟雾动画的烟雾还是比较粗糙的。主要是缺少了一点颗粒感?缺少了一些烟雾的质感。

想要实现更为精致的烟雾效果,我们还得借助 SVG 的 滤镜

接下来会使用 filter: blur() 配合 滤镜,得到更为逼真的烟雾效果。

举个简单的例子,假设有这样几个字:

SMOKE

简单的 CSS:

div {    background: linear-gradient(#fff, #999, #ddd, #888);    background-clip: text;}

得到这样几个带渐变色字:

我们利用 滤镜简单处理一下:

SMOKE

CSS 的中利用 filter: url() 引入该滤镜,这里为了效果更好,我直接在 上引入了该滤镜:

body {    filter: url('#filter');}div {    background: linear-gradient(#fff, #999, #ddd, #888);    background-clip: text;}

我们的字体就被 滤镜 赋予了一种流体的感觉:

这个效果可以说和烟雾效果基本没什么关系,不过只需要再添加一个模糊滤镜,神奇的事情就发生了:

body {    filter: url('#filter');}div {    background: linear-gradient(#fff, #999, #ddd, #888);    background-clip: text;    filter: blur(5px);}

整个效果就瞬间烟雾化了很多:

好,给它添加上循环的动画效果,简单的借助 JavaScript 处理一下:

const filter = document.querySelector("#turbulence");let frames = 1;let rad = Math.PI / 180;let bfx, bfy;function freqAnimation() {    frames += .2    bfx = 0.03;    bfy = 0.03;    bfx += 0.005 * Math.cos(frames * rad);    bfy += 0.005 * Math.sin(frames * rad);    bf = bfx.toString() + " " + bfy.toString();    filter.setAttributeNS(null, "baseFrequency", bf);    window.requestAnimationFrame(freqAnimation);}window.requestAnimationFrame(freqAnimation);

看看效果:

当然,上述效果可以通过:

控制 的 baseFrequency 属性调节

控制 的 numOctaves 属性调节

控制 的 scale 属性调节

的 numOctaves 属性由 30 改成 70,基本就看不到文字的轮廓了,文字整个雾化。我们可以制作类似这样的 hover 效果:

上述完整代码,你可以猛击这里:CodePen CSS + SVG Text Smoke Hover Effect

这样,基于 filter: blur() 配合 滤镜,我们可以得到非常逼真的烟雾效果,基于上述的演示,我们还可以再挖掘非常多有意思的效果,本文就不再赘述

关于"如何使用css实现烟雾效果"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何使用css实现烟雾效果"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

效果 烟雾 滤镜 代码 动画 属性 控制 知识 调节 逼真 内容 基础 感觉 文字 篇文章 颗粒 处理 重要 神奇 粗糙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 x79服务器内存条电脑能用么 公安机关应当根据网络安全 有300台电脑用什么服务器 软件开发的优服务 肥西综合网络技术服务怎么样 皖西学院电子期刊数据库有哪些 小米11服务器处理失败 怎样备份sql数据库备份 软件开发中的序列号 深圳千寻网络技术有限公司 为客户提供一站式软件开发 a11芯片有神经网络技术吗 绝地求生单机版哪个服务器最好 梦幻西游五岳独尊服务器 中小学生网络安全公约短信 国家网络安全相声 如何部署一个简单的服务器 计算机考试数据库技术怎么下载 成都做数据库的小公司 英雄联盟欧洲服务器下载 软件开发全部人员 数据库几种事务 多串口联网服务器 软件开发 软件实施 服务器登陆密码忘记 网络安全培训 密码设置 国家网络安全宣传 班会 山东网络安全发展意见 衡阳深圳网络安全培训收费标准 不安全的服务器什么意思
0