前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSS 火焰?不在话下

CSS 火焰?不在话下

作者头像
Sb_Coco
发布于 2019-04-01 02:43:34
发布于 2019-04-01 02:43:34
1K0
举报
文章被收录于专栏:Coco的专栏Coco的专栏

正文从下面开始。


今天的小技巧是使用纯 CSS 生成火焰,逼真一点的火焰。

嗯,长什么样子?在 CodePen 上输入关键字 CSS Fire,能找到这样的:

或者这样的:

我们希望,仅仅使用 CSS ,效果能再更进一步吗?能不能是这样子:

如何实现

嗯,我们需要使用 filter + mix-blend-mode 的组合来完成。

很多 CSS 华而不实的效果都是 filter + mix-blend-mode,很有意思,但是业务中根本用不上,当然多了解了解总没坏处。

如上图,整个蜡烛的骨架, 除去火焰的部分很简单,掠过不讲。主要来看看火焰这一块如何生成,并且如何赋予动画效果。

Step 1: filter blur && filter contrast

模糊滤镜叠加对比度滤镜产生的融合效果。

单独将两个滤镜拿出来,它们的作用分别是:

  1. filter: blur(): 给图像设置高斯模糊效果。
  2. filter: contrast(): 调整图像的对比度。

但是,当他们“合体”的时候,产生了奇妙的融合现象。

先来看一个简单的例子:

仔细看两圆相交的过程,在边与边接触的时候,会产生一种边界融合的效果,通过对比度滤镜把高斯模糊的模糊边缘给干掉,利用高斯模糊实现融合效果。

利用上述 filter blur & filter contrast,我们要先生成一个类似火焰形状的三角形。(略去过程)

这里类似火焰形状的三角形的具体实现过程,在这篇文章有详细的讲解:你所不知道的 CSS 滤镜技巧与细节

父元素添加 filter: blur(5px) contrast(20),会变成这样:

Step 2: 火焰粒子动画

看着已经有点样子了,接下来是火焰动画,我们先去掉父元素的 filter: blur(5px) contrast(20) ,然后继续 。

这里也是利用了 filter 的融合效果,我们在上述火焰中,利用 SASS 随机均匀分布大量大小不一的圆形棕色 div ,隐匿在火焰三角内部,大概是这样:

接下来,我们再利用 SASS,给中间每个小圆赋予一个从下往上逐渐消失的动画,并且均匀赋予不同的 animation-delay,看起来会是这样:

OK,最重要的一步,我们再把父元素的 filter: blur(5px) contrast(20) 打开,神奇的火焰效果就出来了:

Step 3: mix-blend-mode 润色

当然,上述效果已经很不错了。经过各种尝试,调整参数,最后我发现加上 mix-blend-mode: screen 混合模式,效果更好,得到头图上面的最终效果如下:

完整源码在我的 CodePen 上:CodePen Demo -- CSS Fire

另外一些效果

当然,掌握了这种方法后,这种生成火焰的技巧也可以迁移到其他效果去。下图是我鼓捣到另外一个小 Demo,当 hover 到元素的时候,产生火焰效果:

CodePen Demo -- Hover Fire

嗯,这些其实都是对滤镜及混合模式的一些搭配运用。按照惯例,肯定有人会留言喷了,整这些花里胡哨的有什么用,性能又不好,业务中敢上不把你的腿给打骨折。

于我而言,虚心接受各种批评质疑及各种不同的观点,当然我是觉得搞技术一方面是实用,另一方面是兴趣使然,自娱自乐。希望喷子绕道~

回到正题,了解了这种黏糊糊湿答答的技巧后,还可以折腾出其他很多有意思的效果,当然可能需要更多的去尝试,如下面使用一个标签实现的滴水效果:

CodePen Demo -- 单标签实现滴水效果

值得注意的细节点

动画虽然美好,但是具体使用的过程中,仍然有一些需要注意的地方:

  1. CSS 滤镜可以给同个元素同时定义多个,例如 filter: blur(5px) contrast(150%) brightness(1.5) ,但是滤镜的先后顺序不同产生的效果也是不一样的;

也就是说,使用 filter: blur(5px) contrast(150%) brightness(1.5) 和 filter: brightness(1.5) contrast(150%) blur(5px) 处理同一张图片,得到的效果是不一样的,原因在于滤镜的色值处理算法对图片处理的先后顺序。

  1. 滤镜动画需要大量的计算,不断的重绘页面,属于非常消耗性能的动画,使用时要注意使用场景。记得开启硬件加速及合理使用分层技术;
  2. blur() 混合 contrast() 滤镜效果,设置不同的颜色会产生不同的效果,这个颜色叠加的具体算法暂时没有找到很具体的规则细则,使用时比较好的方法是多尝试不同颜色,观察取最好的效果;
  3. 细心的读者会发现上述效果都是基于黑色底色进行的,动手尝试将底色改为白色,效果会大打折扣。

最后

本文只是简单的介绍了整个思路过程,许多 CSS 代码细节,调试过程没有展现出来。主要几个 CSS 属性默认大家已经掌握了大概,阅读后可以自行去了解补充更多细节:

  • filter
  • mix-blend-mode

更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏。

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

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你所不知道的 CSS 滤镜技巧与细节
承接上一篇你所不知道的 CSS 动画技巧与细节,本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏。 OK,下面直接进入正文。本文所描述的滤镜,指的是 CSS3 出来后的滤镜,不是 IE 系列时代的滤镜,语法如下,还未接触过这个属性的可以先简单到 MDN -- filter 了解下: { filter: blur(5px); filter: brightness(0.4); filt
Sb_Coco
2018/05/28
1.1K0
奇思妙想 CSS 文字动画
本文将会和这篇 -- CSS 奇思妙想边框动画类似,讲一些文字效果,利用不同的属性搭配,实现各式各样的文字动效。
Sb_Coco
2021/03/11
3.5K0
奇思妙想 CSS 文字动画
【Web前端】CSS 高级区块效果
CSS提供了多种工具和属性,使我们能够创建视觉上引人注目的效果。今天我们继续将深入了解几种高级CSS效果:盒子阴影、滤镜、混合模式和文本背景裁剪,提升网页设计的质感和深度。
一条晒干的咸鱼
2024/11/19
1090
【Web前端】CSS 高级区块效果
简单说 通过CSS的滤镜 实现 火焰效果
要实现上面的火焰效果,我们先来了解一些必要的东西。 上次我们说过两个滤镜,blur 和 contrast。 blur 是给图像设置高斯模糊, contrast 是调整图像的对比度, 他们一起使用会产生融合的效果。 效果图
FEWY
2019/05/27
1.4K0
开局一张图,构建神奇的 CSS 效果
在这篇文章中 --CSS 故障艺术,我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。有点类似于抖音的 LOGO。
Sb_Coco
2022/12/20
5621
开局一张图,构建神奇的 CSS 效果
什么? CSS 阴影竟然还有这种骚操作 ?
关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧(https://www.cnblogs.com/coco1s/p/5592136.html),介绍了一些关于 box-shadow 的用法。
苏南
2020/12/16
6360
什么? CSS 阴影竟然还有这种骚操作 ?
奇妙的 CSS MASK
顾名思义,mask 译为遮罩。在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。
Sb_Coco
2020/07/07
9700
使用纯 CSS 实现超酷炫的粘性气泡效果
其源代码在:CodePen Demo -- Goey footer,作者主要使用的是 SVG 滤镜完成的该效果,感兴趣的可以戳源码看看。
Sb_Coco
2022/09/02
1.7K0
使用纯 CSS 实现超酷炫的粘性气泡效果
CSS奇思妙想 -- 使用 background 创造各种美妙的背景
将介绍一些利用 CSS 中的 background、mix-blend-mode、mask 及一些相关属性,制作一些稍微复杂、酷炫的背景。
Sb_Coco
2021/02/22
1.6K0
CSS奇思妙想 -- 使用 background 创造各种美妙的背景
巧用 background-clip 实现超强的文字动效
仔细思考一下,要想实现这类效果,其实用到的核心属性只有一个 -- background-clip: text。
Sb_Coco
2022/04/28
1.3K0
巧用 background-clip 实现超强的文字动效
神奇的CSS,几行代码就可以让照片变老照片的效果
本文将回顾如何仅使用 CSS 在任何图片上创建旧照片效果。无需 Photoshop 或任何其他图像编辑器。只需几行代码!
前端达人
2023/02/17
3.1K0
神奇的CSS,几行代码就可以让照片变老照片的效果
CSS中的混合模式,制作高级特效的必备技巧 进入mix-Blend-Mode
在CSS中,有两个属性负责混合。 mix-blend-mode用于混合DOM元素,background-blend-mode用于组合多个CSS背景。
前端小智@大迁世界
2020/05/26
3.7K0
CSS中的混合模式,制作高级特效的必备技巧
                            进入mix-Blend-Mode
除了 filter 还有什么置灰网站的方式?
当然,通常而言,全站置灰是非常简单的事情,大部分前端同学都知道,仅仅需要使用一行 CSS,就能实现全站置灰的方式。
@超人
2023/05/12
8850
除了 filter 还有什么置灰网站的方式?
使用 backdrop-filter 实现滤镜遮罩
当然,通常而言,全站置灰是非常简单的事情,大部分前端同学都知道,仅仅需要使用一行 CSS,就能实现全站置灰的方式。
Sb_Coco
2022/12/13
2.8K0
使用 backdrop-filter 实现滤镜遮罩
巧用滤镜实现高级感拉满的文字快闪切换效果
当然,今天并非是想用 CSS 实现上述的的效果。在尝试的过程中,我发现了另外一类能够使用 CSS 非常轻松实现文字快闪动画,运用了blur() 滤镜和 contrast() 滤镜产生的融合效果,类似于这样:
Sb_Coco
2021/11/17
1.5K0
巧用滤镜实现高级感拉满的文字快闪切换效果
CSS 实现“故障”特效
这些效果要是综合运用到业务中应该很吸引眼球。今日早读文章由腾讯@chokcoco投稿分享。
Nealyang
2020/02/19
2.3K0
CSS 实现“故障”特效
filter: contrast() 配合 filter: blur() 的奇妙化学作用
好,那如果,不再是直线,而是一条曲线,希望曲线两端,带有圆角,像是这样,又该怎么办呢:
Sb_Coco
2022/09/16
1.4K0
filter: contrast() 配合 filter: blur() 的奇妙化学作用
探究 CSS 混合模式\滤镜导致 CSS 3D 失效问题
今天在写一个小的 CSS Demo,一个关于 3d 球的旋转动画,关于 CSS 3D,少不了会使用下面这几个属性:
Sb_Coco
2019/02/21
1.1K0
探究 CSS 混合模式\滤镜导致 CSS 3D 失效问题
Amazing!!CSS 也能实现极光?
在上次写完这篇文章 -- 巧用渐变实现高级感拉满的背景光动画 之后,文章下面的评论有同学留言,使用 CSS 可以实现极光吗?
Sb_Coco
2021/12/24
7750
Amazing!!CSS 也能实现极光?
基础| 两行 CSS 代码实现ps混合模式
前端爱好者的知识盛宴 嗨 这里是IMWEB 欢迎关注转发 让更多的前端技友一起学习发展 此文作者乃是我鹅厂大神--cocoqiao 大神十分慷慨地将他的所有文章 授权给了我们IMWeb公众号! 嘿嘿以后大家可以更加畅快地学习啦! 引语 很久之前在张鑫旭的博客看到过一篇----  PNG格式小图标的CSS任意颜色赋色技术 (http://www.zhangxinxu.com/wordpress/2016/06/png-icon-change-color-by-css/)。 当时惊为天人,感慨还可以这样玩,
用户1097444
2022/06/29
1.1K0
基础| 两行 CSS 代码实现ps混合模式
相关推荐
你所不知道的 CSS 滤镜技巧与细节
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档