濮阳杆衣贸易有限公司

主頁 > 知識庫 > 如何通過 CSS 寫出火焰效果

如何通過 CSS 寫出火焰效果

熱門標(biāo)簽:廣西房產(chǎn)智能外呼系統(tǒng)推薦 旅游地圖標(biāo)注線路 電銷專用外呼線路 威力最大的電銷機(jī)器人 400電話唐山辦理 地圖標(biāo)注位置怎么弄圖 電銷外呼系統(tǒng)是違法的嗎 電話機(jī)器人鑰匙扣 漯河外呼調(diào)研線路

正文從下面開始。

腳本之家下載:

純CSS3實(shí)現(xiàn)超逼真的蠟燭火焰燃燒動畫效果源碼

今天的小技巧是使用純 CSS 生成火焰,逼真一點(diǎn)的火焰。

嗯,長什么樣子?在 CodePen 上輸入關(guān)鍵字CSS Fire,能找到這樣的:

或者這樣的:

我們希望,僅僅使用 CSS ,效果能再更進(jìn)一步嗎?能不能是這樣子:

如何實(shí)現(xiàn)

嗯,我們需要使用filter+mix-blend-mode的組合來完成。

很多 CSS 華而不實(shí)的效果都是filter+mix-blend-mode,很有意思,但是業(yè)務(wù)中根本用不上,當(dāng)然多了解了解總沒壞處。

如上圖,整個(gè)蠟燭的骨架, 除去火焰的部分很簡單,掠過不講。主要來看看火焰這一塊如何生成,并且如何賦予動畫效果。

Step 1: filter blur && filter contrast

模糊濾鏡疊加對比度濾鏡產(chǎn)生的融合效果。

單獨(dú)將兩個(gè)濾鏡拿出來,它們的作用分別是:

  1. filter: blur(): 給圖像設(shè)置高斯模糊效果。
  2. filter: contrast(): 調(diào)整圖像的對比度。

但是,當(dāng)他們“合體”的時(shí)候,產(chǎn)生了奇妙的融合現(xiàn)象。

先來看一個(gè)簡單的例子:

仔細(xì)看兩圓相交的過程,在邊與邊接觸的時(shí)候,會產(chǎn)生一種邊界融合的效果,通過對比度濾鏡把高斯模糊的模糊邊緣給干掉,利用高斯模糊實(shí)現(xiàn)融合效果。

利用上述filter blur & filter contrast,我們要先生成一個(gè)類似火焰形狀的三角形。(略去過程)

這里類似火焰形狀的三角形的具體實(shí)現(xiàn)過程,在這篇文章有詳細(xì)的講解:你所不知道的 CSS 濾鏡技巧與細(xì)節(jié)

父元素添加filter: blur(5px) contrast(20),會變成這樣:

Step 2: 火焰粒子動畫

看著已經(jīng)有點(diǎn)樣子了,接下來是火焰動畫,我們先去掉父元素的filter: blur(5px) contrast(20),然后繼續(xù) 。

這里也是利用了filter的融合效果,我們在上述火焰中,利用 SASS隨機(jī)均勻分布大量大小不一的圓形棕色 div ,隱匿在火焰三角內(nèi)部,大概是這樣:

接下來,我們再利用 SASS,給中間每個(gè)小圓賦予一個(gè)從下往上逐漸消失的動畫,并且均勻賦予不同的animation-delay,看起來會是這樣:

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

Step 3: mix-blend-mode 潤色

當(dāng)然,上述效果已經(jīng)很不錯(cuò)了。經(jīng)過各種嘗試,調(diào)整參數(shù),最后我發(fā)現(xiàn)加上mix-blend-mode: screen混合模式,效果更好,得到頭圖上面的最終效果如下:

完整源碼在我的 CodePen 上:https://codepen.io/Chokcoco/pen/jJJbmz

另外一些效果

當(dāng)然,掌握了這種方法后,這種生成火焰的技巧也可以遷移到其他效果去。下圖是我鼓搗到另外一個(gè)小 Demo,當(dāng) hover 到元素的時(shí)候,產(chǎn)生火焰效果:

CodePen Demo -- Hover Fire

嗯,這些其實(shí)都是對濾鏡及混合模式的一些搭配運(yùn)用。按照慣例,肯定有人會留言噴了,整這些花里胡哨的有什么用,性能又不好,業(yè)務(wù)中敢上不把你的腿給打骨折。

于我而言,虛心接受各種批評質(zhì)疑及各種不同的觀點(diǎn),當(dāng)然我是覺得搞技術(shù)一方面是實(shí)用,另一方面是興趣使然,自娛自樂。希望噴子繞道~

回到正題,了解了這種黏糊糊濕答答的技巧后,還可以折騰出其他很多有意思的效果,當(dāng)然可能需要更多的去嘗試,如下面使用一個(gè)標(biāo)簽實(shí)現(xiàn)的滴水效果:

CodePen Demo -- 單標(biāo)簽實(shí)現(xiàn)滴水效果

值得注意的細(xì)節(jié)點(diǎn)

動畫雖然美好,但是具體使用的過程中,仍然有一些需要注意的地方:

CSS 濾鏡可以給同個(gè)元素同時(shí)定義多個(gè),例如filter: blur(5px) contrast(150%) brightness(1.5),但是濾鏡的先后順序不同產(chǎn)生的效果也是不一樣的;

也就是說,使用filter: blur(5px) contrast(150%) brightness(1.5)filter: brightness(1.5) contrast(150%) blur(5px)處理同一張圖片,得到的效果是不一樣的,原因在于濾鏡的色值處理算法對圖片處理的先后順序。

濾鏡動畫需要大量的計(jì)算,不斷的重繪頁面,屬于非常消耗性能的動畫,使用時(shí)要注意使用場景。記得開啟硬件加速及合理使用分層技術(shù);blur()混合contrast()濾鏡效果,設(shè)置不同的顏色會產(chǎn)生不同的效果,這個(gè)顏色疊加的具體算法暫時(shí)沒有找到很具體的規(guī)則細(xì)則,使用時(shí)比較好的方法是多嘗試不同顏色,觀察取最好的效果;細(xì)心的讀者會發(fā)現(xiàn)上述效果都是基于黑色底色進(jìn)行的,動手嘗試將底色改為白色,效果會大打折扣。最后

本文只是簡單的介紹了整個(gè)思路過程,許多 CSS 代碼細(xì)節(jié),調(diào)試過程沒有展現(xiàn)出來。主要幾個(gè) CSS 屬性默認(rèn)大家已經(jīng)掌握了大概,閱讀后可以自行去了解補(bǔ)充更多細(xì)節(jié):

  • filter
  • mix-blend-mode

更多精彩 CSS 技術(shù)文章匯總在我的Github -- iCSS,持續(xù)更新,歡迎點(diǎn)個(gè) star 訂閱收藏。

到此這篇關(guān)于如何通過 CSS 寫出火焰效果的文章就介紹到這了,更多相關(guān)CSS 火焰效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:焦作 銅陵 試駕邀約 湖北 無錫 湘西 綏化 欽州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何通過 CSS 寫出火焰效果》,本文關(guān)鍵詞  如何,通過,CSS,寫出,火焰,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何通過 CSS 寫出火焰效果》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何通過 CSS 寫出火焰效果的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    临洮县| 琼结县| 休宁县| 治县。| 炎陵县| 河源市| 霍林郭勒市| 通州区| 云安县| 武乡县| 连城县| 银川市| 遂昌县| 洞口县| 雷波县| 岗巴县| 罗甸县| 云龙县| 孝感市| 达日县| 息烽县| 壤塘县| 张家界市| 小金县| 连江县| 平山县| 永昌县| 自贡市| 台前县| 交口县| 金堂县| 沂水县| 黎平县| 阿鲁科尔沁旗| 务川| 合肥市| 上思县| 五家渠市| 宣化县| 济宁市| 东至县|