這篇文章給大家分享使用css實現極光效果,其中主要步驟包括繪製深色背景、使用漸變畫出極光的輪廓、旋轉拉伸等等相關問題,希望對大家有幫助。
使用 CSS 可以實現極光嗎?
像是這樣:
emmm,這有點難為人了。不過,最近我也嘗試著去試了下,雖然不可能模擬出那麼真實的效果,但是使用 CSS 還是可以作出類似的一些特效的,今天我們就一起來嘗試下。
觀察了一些極光的圖片之後,我發現了極光動畫中一些比較重要的元素:
基於深色背景的明亮漸層色彩
類似水波流動的動畫效果
明亮漸層色彩我們可以盡量使用漸層 模擬。而水波流動的動畫效果,在 SVG 濾鏡中 feturbulence 就是專門幹這個的,這個濾鏡的使用在我過去的多篇文章中也有反覆的提及過。
而除了漸層、SVG 的<feturbulence></feturbulence>
濾鏡之外,我們可能還會用到混合模式(mix-blend-mode
)、CSS 濾鏡等提升效果。
OK,有了大概的思路後,剩下的就是不斷的嘗試。
Step 1. 繪製深色背景
首先,我們可能需要一個深色的背景,用來表示我們的夜空。同時點綴一些星星,星星可以使用box-shadow
模擬,這樣,一副夜空背景我們可以在1 個p 內完成:
<p class="g-wrap"> </p>
@function randomNum($max, $min: 0, $u: 1) { @return ($min + random($max)) * $u; } @function shadowSet($n, $size) { $shadow : 0 0 0 0 #fff; @for $i from 0 through $n { $x: randomNum(350); $y: randomNum(500); $scale: randomNum($size) / 10; $shadow: $shadow, #{$x}px #{$y}px 0 #{$scale}px rgba(255, 255, 255, .8); } @return $shadow; } .g-wrap { position: relative; width: 350px; height: 500px; background: #0b1a3a; overflow: hidden; &::before { content: ""; position: absolute; width: 1px; height: 1px; border-radius: 50%; box-shadow: shadowSet(100, 6); }
這一步比較簡單,借助了SASS 之後,我們能夠得到這樣一幅夜空背景圖:
Step 2. 使用漸變畫出極光的輪廓
接下來,就是利用漸變,畫出極光的一個輪廓效果。
其實就是一個徑向漸層:
<p class="g-wrap"> <p class="g-aurora"></p> </p>
.g-aurora { width: 400px; height: 300px; background: radial-gradient( circle at 100% 100%, transparent 45%, #bd63c1 55%, #53e5a6 65%, transparent 85% ); }
#Step 3. 旋轉拉伸
目前看來,是有一點點輪廓了。下一步,我們把得到的這個漸變效果用旋轉拉伸變換一下。
.g-aurora { ... transform: rotate(45deg) scaleX(1.4); }
我們大概就能得到這樣一個效果:
#Step 4. 神奇的混合模式轉換!
到這裡,其實雛形已經出來了。但顏色看著不太像,為了和深色的背景融合在一起,這裡我們運用上混合模式 mix-blend-mode
。
.g-aurora { ... transform: rotate(45deg) scaleX(1.4); mix-blend-mode: color-dodge; }
神奇的事情發生了,看看效果:
整體的顏色看起來更像極光的顏色。
Step 5. 疊加SVG feturbulence 濾鏡
接下來,我們要產生水紋波動的效果,需要藉助SVG 的<feturbulence></feturbulence>
##我們加入一個SVG 的
<feturbulence></feturbulence>
filter
來引用<p class="g-wrap"> <p class="g-aurora"></p> </p>
.g-aurora { ... transform: rotate(45deg) scaleX(1.4); mix-blend-mode: color-dodge; filter: url(#wave); }

Step 6. 讓極光動起來
animation-fill-mode: alternate
這種特性。我們還是需要寫一點 JavaScript 程式碼,控制動畫的整體循環。 大概的程式碼是這樣:var filter = document.querySelector("#turbulence"); var frames = 0; var rad = Math.PI / 180; function freqAnimation() { bfx = 0.005; bfy = 0.005; frames += .5 bfx += 0.0025 * Math.cos(frames * rad); bfy += 0.0025 * Math.sin(frames * rad); bf = bfx.toString() + ' ' + bfy.toString(); filter.setAttributeNS(null, 'baseFrequency', bf); window.requestAnimationFrame(freqAnimation); } window.requestAnimationFrame(freqAnimation);

- 一些技巧及其他事項
-
漸層元素的周圍會存在明顯的邊界毛刺效果,可以使用黑色內陰影 box-shadow: inset ... - 去除;######實際行文過程中的各個屬性的實際參數看似簡單,過程中其實經過了不斷的調試才得到;###
混合模式及SVG 的feturbulence 濾鏡比較難掌握,需要不斷的練習,不斷的調試;本文極光的顏色選取沒有經過太多反覆調試,願意花時間,可以調試出效果更好的顏色。
最終的效果,不太完美,但也算一副不錯的 CSS SVG 作品。完整的程式碼,你可以看這裡:
(學習影片分享:css影片教學)
以上是鮮為人知!用css做極光效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React生態系統為我們提供了許多庫,所有庫都集中在拖放的相互作用上。我們有反應,反應,可愛dnd,

我可以說我經常使用背景折疊。 IT Wager IT幾乎從未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用RequestAnimationFrame進行動畫化應該很容易,但是如果您還沒有徹底閱讀React的文檔,那麼您可能會遇到一些事情

聽著,我不是GraphQL專家,但我確實喜歡與之合作。作為前端開發人員,它向我曝光數據的方式非常酷。它就像一個菜單


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器