成し遂げる この効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた光の効果と影は比較的品質が低く、可能な限り復元しようとしているとしか言えません。 実際、各ライト セットは基本的に同じなので、ほぼ全体の効果を実現するには、そのうちの 1 つを実装するだけで済みます。 この効果を観察してください: その核となるのは、実は角度グラデーション、つまり conic-gradient() です。角度グラデーションを使用すると、大まかに次のような効果を実現できます。 <div></div> div { 幅: 1000ピクセル; 高さ: 600px; 背景: 円錐勾配( -45度から400ピクセル300ピクセル、 hsla(170度, 100%, 70%, .7), 透明50%、 透明)、 線形グラデーション(-45度、#060d5e、#002268); } 効果をご覧ください: ちょっとそんな感じです。もちろん、よく見ると、グラデーション カラーは 1 つの色から透明に終わるのではなく、色 A -- 透明 -- 色 B となっていることがわかります。このようにすると、光源の残りの半分はそれほど急激にはなりません。変更された CSS コードは次のとおりです。 div { 幅: 1000ピクセル; 高さ: 600px; 背景: 円錐勾配( -45度から400ピクセル300ピクセル、 hsla(170度, 100%, 70%, .7), 透明50%、 hsla(219度、90%、80%、.5) 100%)、 線形グラデーション(-45度、#060d5e、#002268); } 見た目を良くするために、角度グラデーションの最後に追加の色を追加しました。 えーと、ここでは、角度グラデーション conic-gradient() だけでは不十分で、光源の影の効果をシミュレートできないため、光源の影の効果を実現するには他のプロパティを使用する必要があることがわかります。 ここでは、当然ながらbox-shadowを思い浮かべます。複数のボックスシャドウを使用してネオンライトの効果を実現するトリックを紹介します。 光源の影を実現するために別の div を追加してみましょう。 <div class="shadow"></div> 。影 { 幅: 200ピクセル; 高さ: 200px; 背景: #fff; ボックスシャドウ: 0px 0.5px hsla(170度, 95%, 80%, 1), 0px 0 1px hsla(170度, 91%, 80%, .95), 0px 0 2px hsla(171度, 91%, 80%, .95), 0px 0 3px hsla(171度, 91%, 80%, .95), 0px 0 4px hsla(171度, 91%, 82%, .9), 0px 0 5px hsla(172度, 91%, 82%, .9), 0px 0 10px hsla(173度, 91%, 84%, .9), 0px 0 20px hsla(174度, 91%, 86%, .85), 0px 0 40px hsla(175度, 91%, 86%, .85), 0px 0 60px hsla(175度, 91%, 86%, .85); } わかりました。光はありますが、問題は片側からの光しか必要ないということです。どうすればいいでしょうか?切り取る方法はたくさんあります。ここでは、clip-path を使用して要素の任意のスペースを切り取る方法を紹介します。 。影 { 幅: 200ピクセル; 高さ: 200px; 背景: #fff; ボックスシャドウ: .....; クリップパス: ポリゴン(-100% 100%、200% 100%、200% 500%、-100% 500%); } 原則は次のとおりです。 このようにして、片側に光が当たります。 ここで、CSS には実際に片側影を実現する方法がありますが、実際の効果は良くないため、最終的に上記の解決策が採用されました。 次に、上記の片側光と角度グラデーションを配置、回転などによって重ね合わせると、次のような効果が得られます。 今ではかなり似ていますね。次に行うことは、パターン全体を動かすことです。ここには多くのテクニックがあります。中心となるのは、CSS @Property を使用して角度グラデーション アニメーションを実現し、ライト アニメーションと角度グラデーションを重ね合わせることです。 コードのグラデーションを変換するには、CSS @Property を使用する必要があります。コア コードは次のとおりです。 <div class="wrap"> <div class="shadow"></div> </div> @property --xPoint { 構文: '<長さ>'; 継承: false; 初期値: 400px; } @property --yポイント { 構文: '<長さ>'; 継承: false; 初期値: 300px; } 。包む { 位置: 相対的; マージン: 自動; 幅: 1000ピクセル; 高さ: 600px; 背景: 円錐勾配( -45度からvar(--xPoint) var(--yPoint)、 hsla(170度, 100%, 70%, .7), 透明50%、 hsla(219度、90%、80%、.5) 100%)、 線形グラデーション(-45度、#060d5e、#002268); アニメーション: pointMove 2.5 秒無限交互線形; } 。影 { 位置: 絶対; 上: -300px; 左: -330px; 幅: 430ピクセル; 高さ: 300px; 背景: #fff; 変換の原点: 100% 100%; 変換: 回転(225度); クリップパス: ポリゴン(-100% 100%、200% 100%、200% 500%、-100% 500%); box-shadow: ...ここでは多くのシャドウコードが省略されています。 アニメーション: スケール 2.5 秒 無限 交互 線形; } @keyframesスケール{ 50%、 100% { 変換: 回転(225度) スケール(0); } } @keyframes ポイント移動 { 100% { --xポイント: 100px; --yポイント: 0; } } このようにして、完全なライトアニメーションを実現しました。 このようなアニメーションを実現するための手順を確認しましょう。
残りの作業は、上記の手順を繰り返し、他のグラデーションと光源を追加し、アニメーションをデバッグすることです。最終的には、次のような簡単なシミュレーション効果が得られます。 元のエフェクトは .mp4 なので、正確な色と影のパラメータを取得することは不可能です。色はカラーパレットから直接取得し、影はよりカジュアルにシミュレートします。ソースファイルと正確なパラメータがあれば、シミュレーションはよりリアルになります。 完全なコードはここにあります: CodePen – iPhone 13 Pro Gradient やっと この記事は、どちらかと言うと楽しみのためのものです。実際には、上記の効果を生み出すにはもっと洗練されたソリューションがあるはずですし、CSS を使用してそれらをシミュレートするより良い方法もあるはずです。ここでは、いくつかのアイデアを紹介しています。プロセス内のテクニック 1、2、3、4 のいくつかは、学ぶ価値があります。 上記は、CSS グラデーションを使用して高度な背景ライトアニメーションを実現する方法の詳細です。CSS グラデーション背景アニメーションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 |
>>: RHCEはApacheをインストールし、ブラウザでIPにアクセスします
効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある1. 核となる考え方ス...
序文長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決...
この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...
序文docker イメージを削除できません。docker docker imagesを確認すると、イ...
[LeetCode] 181.従業員の収入が管理職よりも多い従業員テーブルには、マネージャーを含む...
Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...
Element UIのtextarea input自動サイズに設定すると、テキストボックスのデフォル...
ゲーム史上最高スコアトップ100をチェックSQLコード cdb_playsgame ps から ps...
MySQL インストーラーは、MySQL ソフトウェアのあらゆるニーズに対応する、使いやすいウィザー...
説明する2 つの日付間の時間間隔を返します。文法DateDiff(間隔、日付1、日付2 [、週の最初...
Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...
DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです...
目次概要Gulp.jsをインストールするGulp.jsを使用してプロジェクトを作成するgulpfil...
序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...
目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...