整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用Html+CSS制作一團火焰

          面搜集到的一些主要使用CSS實現的火焰燃燒的動畫效果。

          • 作者:Chalda Pnuzig
          • 使用技術:HTML (Pug) / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/chalda/pen/wRJYmz
          • 作者:Jamie Coulter
          • 使用技術:HTML / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/jcoulterdesign/pen/yGgxOY
          • 作者:Ivan Grozdic
          • 使用技術:HTML / CSS / JavaScript
          • 依賴庫:bootstrap.css, jquery.js, popper.js, bootstrap.js
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/ig_design/pen/NeRxzj
          • 作者:Jon Kantner
          • 使用技術:HTML (Pug) / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/jkantner/pen/gKRKKb
          • 作者:Yusuke Nakaya
          • 使用技術:HTML (Pug) / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/YusukeNakaya/pen/vJKwZw
          • 作者:Satrio Yamanda
          • 使用技術:HTML / CSS
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/yamanda/pen/RpNMaY
          • 作者:Tahina
          • 使用技術:HTML / CSS
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/tahina/pen/WRXNwQ
          • 作者:Zed Dash
          • 使用技術:HTML / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/z-/pen/JXVpgp
          • 作者:Deepak K Vijayan
          • 使用技術:HTML (Haml) / CSS (SCSS)
          • 依賴庫:-
          • 瀏覽器兼容:Chrome, Edge, Firefox, Opera, Safari
          • 源碼鏈接:https://codepen.io/BrianBravo/pen/JaFfz

          天的小技巧是使用純 CSS 生成火焰,逼真一點的火焰。


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

          或者這樣的:

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

          如何實現

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

          很多 CSS 華而不實的效果都是 filter + mix-blend-mode,很有意思,但是業務中根本用不上,當然多了解了解總沒壞處。

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

          Step 1: filter blur && filter contrast

          模糊濾鏡疊加對比度濾鏡產生的融合效果。

          單獨將兩個濾鏡拿出來,它們的作用分別是:

          filter: blur(): 給圖像設置高斯模糊效果。

          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 混合模式,效果更好,得到頭圖上面的最終效果如下:


          另外一些效果

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


          CodePen Demo -- Hover Fire

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


          于我而言,虛心接受各種批評質疑及各種不同的觀點,當然我是覺得搞技術一方面是實用,另一方面是興趣使然,自娛自樂。希望噴子繞道~

          回到正題,了解了這種黏糊糊濕答答的技巧后,還可以折騰出其他很多有意思的效果,當然可能需要更多的去嘗試,如下面使用一個標簽實現的滴水效果:


          CodePen Demo -- 單標簽實現滴水效果

          值得注意的細節點

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

          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) 處理同一張圖片,得到的效果是不一樣的,原因在于濾鏡的色值處理算法對圖片處理的先后順序。

          濾鏡動畫需要大量的計算,不斷的重繪頁面,屬于非常消耗性能的動畫,使用時要注意使用場景。記得開啟硬件加速及合理使用分層技術;

          blur() 混合 contrast() 濾鏡效果,設置不同的顏色會產生不同的效果,這個顏色疊加的具體算法暫時沒有找到很具體的規則細則,使用時比較好的方法是多嘗試不同顏色,觀察取最好的效果;

          細心的讀者會發現上述效果都是基于黑色底色進行的,動手嘗試將底色改為白色,效果會大打折扣。

          最后

          本文只是簡單的介紹了整個思路過程,許多 CSS 代碼細節,調試過程沒有展現出來。主要幾個 CSS 屬性默認大家已經掌握了大概,閱讀后可以自行去了解補充更多細節:

          filter

          mix-blend-mode

          web前端其實很簡單!

          如何學習呢?看下下面

          領取方法:

          關注“IT金勻” 然后私信回復“前端”即可

          請記得給金勻先來個“評論+轉發”

          序漸進,看看只使用 CSS ,可以鼓搗出什么樣的充電動畫效果。

          畫個電池

          當然,電池充電,首先得用 CSS 畫一個電池,這個不難,隨便整一個:



          歐了,勉強就是它了。有了電池,那接下來直接充電吧。最最簡單的動畫,那應該是用色彩把整個電池灌滿即可。

          方法很多,代碼也很簡單,直接看效果:



          有內味了,如果要求不高,這個勉強也就能夠交差了。通過藍色漸變表示電量,通過色塊的位移動畫實現充電的動畫。但是總感覺少了點什么。

          增加陰影及顏色的變化

          如果要繼續優化的話,需要添加點細節。

          我們知道,低電量時,電量通常表示為紅色,高電量時表示為綠色。再給整個色塊添加點陰影的變化,呼吸的感覺,讓充電的效果看起來確實是在動。



          知識點

          到這里,其實只有一個知識點:

          • 使用 filter: hue-rotate() 對漸變色彩進行色彩過渡變換動畫

          我們無法對一個漸變色直接進行 animation ,這里通過濾鏡對色相進行調整,從而實現了漸變色的變換動畫。

          上述例子完整的 Demo: CodePen Demo -- Battery Animation One

          添加波浪

          ok,剛剛算一個小里程碑,接下來再進一步。電量的頂部為一條直線有點呆呆的感覺,這里我們進行改造一下,如果能將頂部直線,改為波浪滾動,效果會更為逼真一點。

          改造之后的效果:



          使用 CSS 實現這種波浪滾動效果,其實只是用了一種障眼法,具體的可以我早期寫的這篇文章:

          純 CSS 實現波浪效果!

          知識點

          這里的一個知識點就是上述說的使用 CSS 實現簡易的波浪效果,通過障眼法實現,看看圖就明白了:



          上述例子完整的 Demo: CodePen Demo -- Battery Animation Two

          OK,到這,上述效果加上數字變化已經算是一個比較不錯的效果了。當然上面的效果看上去還是很 CSS 的,就是一眼看到就覺得用 CSS 是可以做到的。

          使用強大的 CSS 濾鏡實現安卓充電動畫效果

          那下面這個呢?



          用安卓手機的同學肯定不陌生,這個是安卓手機在充電的時候的效果。看到這個我就很好奇,使用 CSS 能做到嗎?

          經過一番嘗試,發現使用 CSS 也是可以很好的模擬這種動畫效果:



          上述 Gif 錄制的效果圖是完全使用 CSS 模擬的效果。

          上述例子完整的 Demo: HuaWei Battery Charging Animation

          知識點

          拆解一下知識點,最主要的其實是用到了 filter: contrast() 以及 filter: blur() 這兩個濾鏡,可以很好的實現這種融合效果。

          單獨將兩個濾鏡拿出來,它們的作用分別是:

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

          但是,當他們“合體”的時候,產生了奇妙的融合現象。

          先來看一個簡單的例子:



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

          當然,這種效果在之前的文章也多次提及過,更具體的,可以看看:

          • CSS 火焰?不在話下
          • 你所不知道的 CSS 濾鏡技巧與細節

          顏色的變換

          當然,這里也是可以加上顏色的變換,效果也很不錯:



          上述例子完整的 Demo: HuaWei Battery Charging Animation

          容易忽視的點

          通過調節 filter: blur() 及 filter: contrast() 屬性的值,動畫效果其實會有很大程度的變化,好的效果需要不斷的調試。當然,經驗在其中也是發揮了很重要的作用,說到底還是要多嘗試。

          最后

          本文給出的幾個充電動畫,效果漸進增強,本文只指出了最核心的知識點。但是在實際輸出的過程中有很多小細節是本文沒有提及的,感興趣的同學還是應該點進 Demo 好好看看源碼或者自己動手實現一遍。

          更多精彩 CSS 技術文章匯總在我的 Github -- iCSS ,持續更新,歡迎點個 star 訂閱收藏。

          好了,本文到此結束,希望對你有幫助 :)

          如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。


          主站蜘蛛池模板: 亚洲日韩精品一区二区三区无码| 久久亚洲一区二区| 日本中文一区二区三区亚洲| 亚洲一区精品视频在线| 免费高清av一区二区三区| 无码人妻精品一区二区三区99性| 一区二区三区在线免费观看视频| 国产午夜精品一区二区三区极品| 在线观看精品一区| 亚洲福利视频一区二区三区| 中文字幕日韩人妻不卡一区| 亚洲AV一区二区三区四区| 精品aⅴ一区二区三区| 精彩视频一区二区三区| 国产乱码一区二区三区爽爽爽| 日韩在线视频一区二区三区| 国产精品视频分类一区| 日韩精品一区二区三区老鸭窝 | 变态拳头交视频一区二区| 日本一区二区三区精品国产| 天天视频一区二区三区| 精品无码一区二区三区电影| 亚洲一区二区影视| 精品熟人妻一区二区三区四区不卡| 亚洲AV综合色一区二区三区| 久久高清一区二区三区| 91在线一区二区| 成人免费一区二区无码视频| 日本人的色道www免费一区| 欧洲精品码一区二区三区| 国产伦精品一区二区三区免.费| 国产三级一区二区三区| 成人精品视频一区二区三区| 精品国产一区二区三区久久| 无码国产精品一区二区免费模式| 午夜福利av无码一区二区| 中文乱码字幕高清一区二区| 日本精品啪啪一区二区三区| av无码一区二区三区| 亚洲不卡av不卡一区二区| 亚洲午夜在线一区|