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

模糊颗粒感的烟雾效果用 纯css 也能实现,下面本篇文章就来一步步看看使用纯css能否比较好的实现一些烟雾效果

像是这样:

1.png

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

模糊效果颗粒感

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

立即学习“前端免费学习笔记(深入)”;

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

纯 CSS 实现烟雾动画

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

2.gif

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

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;  }}

看看效果:

3.gif

在上述的基础上,我们可以加上位移、旋转、缩放,稍微改造一下上述代码,添加一些 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;  }}

就可以得到如下效果:

4.gif

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

伪代码如下:

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

就可以得到这样一个被风吹跑的字,幻化成烟雾的效果:

5.gif

上述效果并非我原创,最早见于这位作者 — CodePen Demo — Smoky Text By Bennett Feelyhttps://codepen.io/bennettfeely/pen/lgybC

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

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

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

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

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

SMOKE

简单的 CSS:

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

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

6.gif

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

SMOKE

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

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

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

7.gif

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

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

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

8.gif

好,给它添加上循环的动画效果,简单的借助 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);

看看效果:

9.gif

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

https://codepen.io/Chokcoco/pen/wvrrwVM

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

控制 baseFrequency 属性调节

控制 numOctaves 属性调节

控制 scale 属性调节

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

10.gif

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

https://codepen.io/Chokcoco/pen/Jjrrojj

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

最后

好了,本文到此结束,希望本文对你有所帮助 :)

(学习视频分享:css视频教程)

以上就是模糊颗粒感的烟雾效果用 纯CSS 也能实现!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1623516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 08:19:36
下一篇 2025年12月16日 11:35:22

相关推荐

  • 看看图片走马灯动态效果利用CSS怎么实现?

    图片走马灯动态效果利用css怎么实现?下面本篇文章就来给大家介绍一下使用 css3 animation transform实现图片走马灯效果的方法,希望对大家有所帮助! 由于项目需要实现一个图片的走马灯效果。查看了大部份通用vue的组件库,比较少看到这类组件,就自己手动实现基于css3动画的走马灯效…

    好文分享 2025年12月24日
    000
  • 使用CSS实现一个吃豆人的Loading加载效果

    本篇文章给大家介绍一下使用纯css怎么实现一个吃豆人的loading加载效果,希望对大家有所帮助! CSS确实是魅力大的离谱,可能最近一段时间关注我文章的会知道,我发了好多跟CSS有关的文章了,有的是看到网上有这种效果,自己进行复刻,有的是利用一个自己刚看到的知识点,运用它去做一些好玩的东西,总之,…

    2025年12月24日 好文分享
    000
  • 利用纯CSS实现旋转React图标的动画效果

    本篇文章手把手带大家利用纯css实现旋转react图标的动画效果,希望对大家有所帮助! 几天前,小包在 codepen 看到一个剑气加载效果,大为惊奇,再次被 CSS 折服。本来想和大家一起实现剑气加载,搜索后小包发现小卢大佬实现过,就不再班门弄斧了。 小包是会服气的人吗?of course! 小包…

    2025年12月24日 好文分享
    000
  • 要过年了,使用CSS实现一个喜庆的灯笼动画效果!

    要过年了,下面本篇文章带大家用css画了个灯笼,并添加动画效果,实现灯笼左右摇摆的效果,希望对大家有所帮助! 过年了~ 过年了~ 过年了~ 辞旧迎新过年啦 张灯结彩春节啦~ 金鸡起舞送福啦 新的一年福来啦~ 立即学习“前端免费学习笔记(深入)”; 文章开头几句歌词,顿时显得喜庆了不,我们的灯笼是下面…

    2025年12月24日 好文分享
    000
  • css3中translate的用法是什么

    css中translate用于定义元素的平移转换,可与transform属性配合使用,语法为“transform:translate(x,y)”;translate()函数中“x”定义元素在x轴的平移距离,“y”定义元素在y轴的平移距离。 本教程操作环境:windows10系统、CSS3&&…

    2025年12月24日
    000
  • css必须要知道的盒子模型重点是什么(整理分享)

    本篇文章给大家带来了css盒子模型中常用到的相关知识,所谓盒子模型就是把html页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器,每个矩形都由元素的内容、内边距、边框和外边距组成。下面我们就分别来看一下,希望对大家有帮助。 其实,CSS就三个大模块: 盒子模型 、 浮动 、 定位,其余的都…

    2025年12月24日 好文分享
    000
  • css定位position属性应该怎样用(实例详解)

    本篇文章给大家带来css中position定位属性的相关知识,position用于属性规定元素的定位类型,不同的属性值有着不同的定位样式,希望对大家有帮助。 定位(position) background-position 背景定位 如果,说浮动, 关键在一个 “浮” 字上面, 那么 我们的定位,关…

    2025年12月24日 好文分享
    000
  • 最通俗易懂的CSS浮动float属性详解(图文详细)

    本篇文章给大家带来了css中float浮动属性的相关知识详细解析,float 属性定义元素在哪个方向浮动,下面我们就来看一下不同的属性值会出现什么不同的结果,希望对大家有帮助。 CSS 浮动float属性详解 很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇…

    2025年12月24日 好文分享
    000
  • css3中过渡的用法是什么

    css3中,过渡属性transition用于设置元素过渡效果,是简写属性,语法“transition:property duration timing-function delay”,属性值分别设置了元素过渡的属性名、时间、转速和延迟时间。 本教程操作环境:windows10系统、CSS3&…

    2025年12月24日
    000
  • css3怎样实现网页的淡入效果

    方法:1、利用“body{animation:名称 时间}”语句给网页元素body绑定动画;2、利用“@keyframes 名称{0%{opacity:0;}}”语句,设置网页淡入的动画关键帧,opacity属性用于设置元素的透明度。 本教程操作环境:windows10系统、CSS3&&am…

    2025年12月24日
    000
  • 怎么玩转css动画?(整理分享)

    本篇文章给大家带来关于css中动画的相关知识,其中包括什么是动画,动画的调用以及多关键帧动画应该怎样实现,希望对你有帮助。 1. 什么是动画 在 CSS 中,可以使用@keyframes来定义动画 (keyframes 表示“关键帧”) 大致结构: @keyframes rotation { /* …

    2025年12月24日
    000
  • css3向左偏移是什么样式

    在css中,向左偏移的样式是“transform:translate(-向左偏移距离值);”;transform属性的作用是允许我们对元素进行旋转、缩放、移动或倾斜操作,translate()函数的作用是定义元素的平移转换。 本教程操作环境:windows10系统、CSS3&&HTM…

    2025年12月24日
    000
  • 什么是css3弹性盒子

    css3中,弹性盒子是一种布局方式,为了让页面适应不同的屏幕大小以及设备类型,进而提供一种更加有效的方式来分配空间;可以利用display属性来定义弹性盒子,语法为“display:flex”或者“display:inline-flex”。 本教程操作环境:windows10系统、CSS3&…

    2025年12月24日
    000
  • css中::before是什么意思

    css中“::before”的意思是“在…之前”,是一个伪类元素,用于创建一个伪元素,并将其设置为选中元素的第一个子元素,插入到元素的其他内容之前,语法为“element::before{样式代码}”。 本教程操作环境:windows10系统、CSS3&&HTML5版、D…

    2025年12月24日
    000
  • ex在css中是什么意思

    css中ex是一种相对长度单位,表示相对于当前字体的“x-height”长度,也就是相对于字符“x”的高度,通常为字体高度的一半,语法为“大小属性:数值ex;”。 本教程操作环境:windows10系统、CSS3&&HTML5版、Dell G3电脑。 ex在css中是什么意思 css…

    2025年12月24日
    000
  • css内嵌样式是什么

    css内嵌样式是将css写在网页源文件的头部,即在“”和“”之间,利用style标签将css样式代码包围的样式;内嵌样式的特点是该样式只能在此页使用,可以解决行内样式多次书写的弊端。 大家感兴趣的话,可以继续访问:css视频教程。 以上就是css内嵌样式是什么的详细内容,更多请关注创想鸟其它相关文章…

    好文分享 2025年12月24日
    000
  • css动画中倾斜代码是什么

    css动画中倾斜的代码是“transform:skewX(倾斜角度值)”;transform属性的作用是允许我们对元素进行旋转、缩放、移动或倾斜操作,skewX()函数的作用是定义元素的倾斜转换。 本教程操作环境:windows10系统、CSS3&&HTML5版、Dell G3电脑。…

    2025年12月24日
    000
  • css3怎样实现旋转缩放动画效果

    方法:1、利用“元素{animation:名称 时间}”语句给元素绑定旋转缩放动画;2、利用“@keyframes 名称{100%{transform:rotate(旋转角度) scale(缩放比例);}}”语句实现旋转缩放动画效果。 本教程操作环境:windows10系统、CSS3&&am…

    2025年12月24日
    000
  • css3怎么办能选择第三个li元素

    在css中,可以利用“:nth-child(n)”选择器来选择第三个li元素,该选择器的作用就是选择父元素下的第n个子元素,当选择器中的数字为3时,会选择第3个元素,语法为“li:nth-child(3){css样式代码;}”。 本教程操作环境:windows10系统、CSS3&&H…

    2025年12月24日
    000
  • css3怎样实现背景线性渐变

    在css中,可以利用“background-image”属性和“linear-gradient()”函数实现元素背景线性渐变,语法为“元素{background-image:linear-gradient(渐变方向,颜色1,颜色2..)”。 本教程操作环境:windows10系统、CSS3&…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信