iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何使用css实现烟雾效果
  • 508
分享到

如何使用css实现烟雾效果

2024-04-02 19:04:59 508人浏览 泡泡鱼
摘要

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

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

如何使用css实现烟雾效果

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

  • 模糊效果

  • 颗粒感

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

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

纯 CSS 实现烟雾动画

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

如何使用css实现烟雾效果

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

<span>C</span>

我们仅仅是通过 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;
  }
}

就可以得到如下效果:

如何使用css实现烟雾效果

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

伪代码如下:

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

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

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

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

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

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

<div">SMOKE</div>

简单的 CSS:

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

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

如何使用css实现烟雾效果

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

<div>SMOKE</div>
<svg width="0">
  <filter id="filter">
    <feTurbulence id="turbulence" type="fractalNoise" baseFrequency=".03" numOctaves="20" />
    <feDisplacementMap in="SourceGraphic" scale="30" />
  </filter>
</svg>

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

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

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

如何使用css实现烟雾效果

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

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

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

如何使用css实现烟雾效果

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

看看效果:

如何使用css实现烟雾效果

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

控制 <feTurbulence> 的 baseFrequency 属性调节

控制 <feTurbulence> 的 numOctaves 属性调节

控制 <feDisplacementMap> 的 scale 属性调节

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

如何使用css实现烟雾效果

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

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

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

--结束END--

本文标题: 如何使用css实现烟雾效果

本文链接: https://www.lsjlt.com/news/88274.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用css实现烟雾效果
    这篇文章主要介绍了如何使用css实现烟雾效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用css实现烟雾效果文章都会有所收获,下面我们一起来看看吧。仔细观察烟雾效果,有...
    99+
    2024-04-02
  • CSS如何实现模糊颗粒感的烟雾效果
    小编给大家分享一下CSS如何实现模糊颗粒感的烟雾效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!像是这样:仔细观察烟雾效果,有...
    99+
    2024-04-02
  • 如何使用纯CSS实现直立的红烛、跳动的火焰,腾起的烟雾效果
    这篇文章主要介绍了如何使用纯CSS实现直立的红烛、跳动的火焰,腾起的烟雾效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、效果抢先预览参...
    99+
    2024-04-02
  • Python如何实现浪漫烟花效果
    这篇文章主要介绍了Python如何实现浪漫烟花效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 旖旎风景马上虎年了,也是我的生肖年,很激动!(不小心暴露了年龄,哈哈哈.....
    99+
    2023-06-29
  • 如何利用Matlab仿真实现图像烟雾识别
    这篇文章主要为大家展示了“如何利用Matlab仿真实现图像烟雾识别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Matlab仿真实现图像烟雾识别”这篇文章吧。一、算法简介1.1 c-me...
    99+
    2023-06-21
  • 如何使用CSS实现极光效果
    小编给大家分享一下如何使用CSS实现极光效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!像是这样:emmm,这有点难为人了。不...
    99+
    2024-04-02
  • 如何使用CSS实现斜线效果
    本篇内容主要讲解“如何使用CSS实现斜线效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用CSS实现斜线效果”吧!如何使用单个标签,实现下图所示的斜线效...
    99+
    2024-04-02
  • 如何使用css3+js实现烟花绽放的动画效果
    这篇文章主要为大家展示了“如何使用css3+js实现烟花绽放的动画效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用css3+js实现烟花绽放的动画效果...
    99+
    2024-04-02
  • 怎么用Python实现烟花效果
    本篇内容主要讲解“怎么用Python实现烟花效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python实现烟花效果”吧!效果如下:这里给出代码,祝各位老哥新年快乐。import&nbs...
    99+
    2023-06-29
  • 基于Html+CSS+JS实现手动放烟花效果
    目录效果展示实现代码HtmlCssJavaScript雷迪森安的乡亲们,欢迎来到老实人的前端课堂,上次写了一个新春小盲盒,这大过年的,我把烟花都给你们准备好了,今天我们来写个小烟花吧...
    99+
    2024-04-02
  • 如何使用css实现过渡+3D效果
    这篇文章主要为大家展示了“如何使用css实现过渡+3D效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用css实现过渡+3D效果”这篇文章吧。css过渡...
    99+
    2024-04-02
  • 如何使用CSS实现打点Loading效果
    本篇内容主要讲解“如何使用CSS实现打点Loading效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用CSS实现打点Loading效果”吧!基于box...
    99+
    2024-04-02
  • 如何使用css实现3D穿梭效果
    这篇文章主要介绍“如何使用css实现3D穿梭效果”,在日常操作中,相信很多人在如何使用css实现3D穿梭效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用css实现3...
    99+
    2024-04-02
  • 如何使用纯css实现开关效果
    这篇文章将为大家详细讲解有关如何使用纯css实现开关效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先是构思我们使用<input type="checkbox">标签来...
    99+
    2023-06-08
  • css如何使用RGBA实现透明效果
    这篇文章将为大家详细讲解有关css如何使用RGBA实现透明效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 RGBA 实现透明效果  目前,Web 设计中的透明效果主要靠 PNG 图片实现(但在 I...
    99+
    2023-06-27
  • C++实现动态烟花效果
    目录一、前言二、代码fire.hmain.cppfire.cpp三、实现效果一、前言 C++实现的放烟花程序 用到了EGE图形库,没有的需要自行安装 可调项:背景图和背景音乐、粒子模...
    99+
    2024-04-02
  • 如何使用CSS实现图片翻转效果
    在现代网站设计和开发中,图片翻转效果已经成为了一个非常流行和常见的设计元素。通过这种效果,用户可以更加直观地感受到网站的活力和动态感。在本文中,我们将重点讨论如何使用CSS实现这种图片翻转效果。首先,我们需要明确一下CSS3中提供了两种方式...
    99+
    2023-05-14
  • 如何使用CSS实现Tab页切换效果
    这篇文章主要介绍如何使用CSS实现Tab页切换效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!三种写法:利用 :hover 选择器缺点:只有鼠标在元素上面的时候才有效果,无法实现选中和默认显示某一个的效果利用 a标...
    99+
    2023-06-08
  • 使用纯CSS如何实现3D旋转效果
    小编给大家分享一下使用纯CSS如何实现3D旋转效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!主要使用CSS中的 preserve-3d 、perspective 属性实现3D效果效果HTML代码<body>...
    99+
    2023-06-08
  • 如何使用CSS实现文字删除效果
    在网页设计中,我们可能需要一些特殊效果来增加页面的美观度和趣味性。例如,我们可能需要一些文字效果来突出一些重要的信息或强调某些内容。其中之一便是文字删除,即在一些文本中添加删除线来表示它们已不再是有效或相关的内容。本文将介绍如何使用CSS来...
    99+
    2023-05-14
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作