ホームページ > 記事 > ウェブフロントエンド > 豪華なオーロラもCSSで実現できる!
前回この記事を書き終えた後、グラデーションを巧みに使ってハイエンドな背景の光アニメーションを実現しましたが、一部の学生が記事の下のコメントに「CSS を使用してオーロラを実現できますか??」というコメントを残しました。
こんな感じ:
えっと、これはちょっと恥ずかしいですね。しかし、最近試してみました。このようなリアルな効果をシミュレートすることは不可能ですが、CSS を使用して同様の特殊効果を作成することはできます。今日はそれを一緒に試してみます。 [推奨される学習: css ビデオ チュートリアル ]
いくつかのオーロラの写真を観察した後、オーロラ アニメーションのより重要な要素のいくつかを発見しました。暗い背景の明るいグラデーション カラー
feturbulence がこのために特別に設計されており、このフィルターの使用については、私の過去の記事の多くで繰り返し言及されています。 グラデーションと SVG の
混合モード(
mix-blend-mode )も使用できます。 CSSフィルター等で効果を高めます。 OK、大まかなアイデアを理解したら、あとは試し続けるだけです。
<div class="g-wrap"> </div>
@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 を使用すると、このような夜空の背景画像を取得できます。
#ステップ 2. グラデーションを使用してオーロラの輪郭を描画します
次のステップは、グラデーションを使用してオーロラの輪郭効果を作成することです。 実際には、放射状のグラデーションです。<div class="g-wrap"> <div class="g-aurora"></div> </div>
.g-aurora { width: 400px; height: 300px; background: radial-gradient( circle at 100% 100%, transparent 45%, #bd63c1 55%, #53e5a6 65%, transparent 85% ); }
ステップ 3. 回転して引き伸ばします
現時点では、ちょっとした概要です。次に、取得したグラデーション効果を回転および伸縮して変形します。.g-aurora { ... transform: rotate(45deg) scaleX(1.4); }
ステップ 4. 魔法のブレンド モード変換!
この時点で、実際にプロトタイプが完成しました。ただし、色はあまり似ていないので、暗い背景とブレンドするために、ここでは描画モード.g-aurora { ... transform: rotate(45deg) scaleX(1.4); mix-blend-mode: color-dodge; }
何か魔法のようなことが起こりました。その効果を見てください:
全体の色はオーロラの色に似ています。
ステップ 5. SVG の胎児気流フィルターをオーバーレイする次に、水の波紋の効果を生成したいので、SVG の興味深い!強力な SVG フィルター
filter を使用して
<div class="g-wrap"> <div class="g-aurora"></div> </div>
.g-aurora { ... transform: rotate(45deg) scaleX(1.4); mix-blend-mode: color-dodge; filter: url(#wave); }
を参照すると、次のような効果が得られます。
わあ、あなたもすでにそう感じていませんか?胎児気流の特徴を通じて、オーロラの効果をほぼシミュレートすることができます。
ステップ 6. オーロラを動かしましょう最後のステップでは、オーロラを動かす必要があります。 SVG アニメーション自体はおおよそのコードは次のとおりです:
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...
; 最終的な効果は完璧ではありませんが、それでも優れた CSS SVG 作品です。完全なコードはここで見ることができます:
CodePen デモ -- Aurora
さて、この記事はここで終わります。この記事がお役に立てば幸いです
さらにエキサイティングな CSS 技術記事は、私の Github -- iCSS にまとめられており、継続的に更新されます。購読して収集するには、星をクリックしてください。
まだ質問や提案がある場合は、もっとコミュニケーションしてください。これはオリジナルの記事です。文体が限られており、才能が浅いです。記事に何か間違っている場合は、お知らせください。 。
以上が豪華なオーロラもCSSで実現できる!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。