css3实现蜡烛火焰效果实例
Admin 2021-04-25 群英技术资讯 888 次浏览
CSS3能够创建动画,可以实现的动画效果是丰富的,因此可以取代很多网页动画图像,flash动画和JavaScript实现的效果。这篇文章就给大家用CSS3来显示一个蜡烛燃烧火焰的动画效果,感兴趣的朋友就继续往下看吧。
今天的小技巧是使用纯 CSS 生成火焰,逼真一点的火焰。嗯,长什么样子?在 CodePen 上输入关键字CSS Fire
,能找到这样的:
或者这样的:
我们希望,仅仅使用 CSS ,效果能再更进一步吗?能不能是这样子:
嗯,我们需要使用filter
+mix-blend-mode
的组合来完成。很多 CSS 华而不实的效果都是filter
+mix-blend-mode
,很有意思,但是业务中根本用不上,当然多了解了解总没坏处。如上图,整个蜡烛的骨架, 除去火焰的部分很简单,掠过不讲。主要来看看火焰这一块如何生成,并且如何赋予动画效果。
模糊滤镜叠加对比度滤镜产生的融合效果。单独将两个滤镜拿出来,它们的作用分别是:
filter: blur()
: 给图像设置高斯模糊效果。filter: contrast()
: 调整图像的对比度。但是,当他们“合体”的时候,产生了奇妙的融合现象。
先来看一个简单的例子:
仔细看两圆相交的过程,在边与边接触的时候,会产生一种边界融合的效果,通过对比度滤镜把高斯模糊的模糊边缘给干掉,利用高斯模糊实现融合效果。
利用上述filter blur & filter contrast
,我们要先生成一个类似火焰形状的三角形。(略去过程)这里类似火焰形状的三角形的具体实现过程,在这篇文章有详细的讲解:你所不知道的 CSS 滤镜技巧与细节
父元素添加filter: blur(5px) contrast(20)
,会变成这样:
看着已经有点样子了,接下来是火焰动画,我们先去掉父元素的filter: blur(5px) contrast(20)
,然后继续 。这里也是利用了filter
的融合效果,我们在上述火焰中,利用 SASS随机均匀分布大量大小不一的圆形棕色 div ,隐匿在火焰三角内部,大概是这样:
接下来,我们再利用 SASS,给中间每个小圆赋予一个从下往上逐渐消失的动画,并且均匀赋予不同的animation-delay
,看起来会是这样:
OK,最重要的一步,我们再把父元素的filter: blur(5px) contrast(20)
打开,神奇的火焰效果就出来了:
当然,上述效果已经很不错了。经过各种尝试,调整参数,最后我发现加上mix-blend-mode: screen
混合模式,效果更好,得到头图上面的最终效果如下:
本文只是简单的介绍了整个思路过程,许多 CSS 代码细节,调试过程没有展现出来。主要几个 CSS 属性默认大家已经掌握了大概,阅读后可以自行去了解补充更多细节:
filter
mix-blend-mode
对于火焰效果也能应用到字体上,例如字体燃烧火焰效果,这也是很酷炫的。对css3实现火焰效果就介绍到这,希望能够大家启发。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们在开发电子商务网站时,往往会遇到发开商场优惠券的需求,那么我们就需要考虑优惠券的样式。边缘镂空打孔效果,是我们经常能在一些优惠券的设计上能看到的,下面是就给大家分享一下css圆形镂空效果的实现。大家在做优惠券时,能参考一下。
css使用transform垂直对齐:1、使用transform从单行文本、段落到box,都会垂直对齐。2、translate属性可以改变元素的位置,translateX(10px)实现x坐标轴移动10个单位,如果是负值,则沿相反方向移动。
在网页设计中,常会遇到让元素在网页居中的需求,那么怎么把元素居中在网页?有什么方法?其实实现元素居中并不难,接下来我们就一起来了解一下。
深入理解margin塌陷和margin合并的解决方案,有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
本篇文章带大家了解一下CSS的三种基本选择器:元素选择器、类选择器、id选择器,并聊聊这三种选择器优先级,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008