CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

成し遂げる

この効果は 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;
    }
}

このようにして、完全なライトアニメーションを実現しました。

このようなアニメーションを実現するための手順を確認しましょう。

  1. 基本的なフレームワークを作成するには、円錐グラデーションを使用します。ここでは、円錐グラデーションの背後に暗い背景がある複数のグラデーションも使用されています。
  2. 複数のボックスシャドウを使用して光と影の効果を実現する(ネオン効果とも呼ばれる)
  3. クリップパスを使用して要素の任意の領域をクリップする
  4. CSS @Property を使用してグラデーションアニメーション効果を実現する

残りの作業は、上記の手順を繰り返し、他のグラデーションと光源を追加し、アニメーションをデバッグすることです。最終的には、次のような簡単なシミュレーション効果が得られます。

元のエフェクトは .mp4 なので、正確な色と影のパラメータを取得することは不可能です。色はカラーパレットから直接取得し、影はよりカジュアルにシミュレートします。ソースファイルと正確なパラメータがあれば、シミュレーションはよりリアルになります。

完全なコードはここにあります: CodePen – iPhone 13 Pro Gradient

やっと

この記事は、どちらかと言うと楽しみのためのものです。実際には、上記の効果を生み出すにはもっと洗練されたソリューションがあるはずですし、CSS を使用してそれらをシミュレートするより良い方法もあるはずです。ここでは、いくつかのアイデアを紹介しています。プロセス内のテクニック 1、2、3、4 のいくつかは、学ぶ価値があります。

上記は、CSS グラデーションを使用して高度な背景ライトアニメーションを実現する方法の詳細です。CSS グラデーション背景アニメーションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

<<:  Mysqlの同時パラメータ調整の詳細な説明

>>:  RHCEはApacheをインストールし、ブラウザでIPにアクセスします

推薦する

MySQL インデックスが失敗するいくつかの状況の概要

1. インデックスはnull値を保存しないより正確に言うと、単一列インデックスには null 値は格...

MySQL でデータベースを作成した後、ユーザー 'root'@'%' によるデータベース 'xxx' へのアクセスが拒否される問題を解決する

序文最近、仕事で問題が発生しました。データベースを作成した後、データベースに接続するときにエラーが発...

モバイルプラットフォーム開発におけるメタタグの適用の詳細な説明

デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...

Dockerはbusyboxを使用してベースイメージを作成します

Docker イメージの最初の行は FROM alpine などのイメージで始まりますが、最初のベー...

60件のページング事例と優れた実践例を推奨

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...

JavaScript で円形カルーセルを実装する

この記事では、円形カルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹介しま...

CSS ロリポップを描くサンプルコード

背景: 毎日少しずつ進歩し、少しずつ積み重ねていけば、どんどん良くなっていきますコード: <!...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

ウェブページのコアコンテンツ(画像とテキスト)の視覚的表現の紹介

情報の最適化と改良は常にデザインの最初のステップです。 「これは百度アライアンスユーザーエクスペリエ...

JavaScript 正規表現の説明

目次1. 正規表現の作成2. 使用モード2.1 シンプルモードの使用2.2 特殊文字の使用3. 応用...

Win Server 2019 サーバーの IIS 構成と Web サイトの簡単な公開

1.まずサーバーにリモート接続する2. サーバーマネージャーを開く 3役割と機能の追加 4サーバープ...

HTML_PowerNode 入門 Java アカデミー

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 HTML ...

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

Vue カードスタイルのクリックして切り替える画像コンポーネントの使用方法の詳細な説明

この記事では、vueカードスタイルのクリックして切り替える画像コンポーネントを参考までに紹介します。...