この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のように紹介します。 エフェクトアニメーションは以下のとおりです。 私のコードペンのプレビューリンクとコード: https://codepen.io/lio-mengxiang/pen/YzKrEde ナレッジポイントプレビュー この記事の Less スキル + CSS スキルの知識ポイントは次のとおりです。
HTML ドキュメント構造 まず、HTML ファイルの構造は次のように非常にシンプルです。 <div> <div id="start1"></div> <div id="start2"></div> <div id="start3"></div> </div> ステップ1: 放射状グラデーションはグラデーション背景を生成します htmlタグとbodyタグに設定する * { パディング: 0; マージン: 0; } html、本文{ 背景: 放射状グラデーション(下部に楕円、#1B2735 0%、#090A0F 100%); オーバーフロー: 非表示; 高さ: 100%; } 効果は以下のとおりです。 比較のため、私が描いた背景画像は真っ黒ではないので、比較用に真っ黒な画像を置いておきます。上の画像はそこまで黒ではなく、少しグレーになっているのが分かります。 放射状勾配パラメータの紹介です 楕円は、楕円形のグラデーションを使用していることを示します。使い方は以下の図をご覧ください。 // 上の画像のパラメータは、radial-gradient(ellipse,#ffffff, #6a6a6a) です。 つまり、色は白 #ffffff から灰色 #6a6a6a までの楕円形のグラデーションです。 下部 これは、楕円グラデーションの中心が下部にあることを意味します。具体的な効果については、次の図を参照してください。 // 上の画像のパラメータは、radial-gradient(ellipse at bottom,#ffffff, #6a6a6a) です。 さて、この時点でグラデーションは完成しました ステップ2: ボックスシャドウが何百もの星を生成する仕組み まず、3つの問題を解決する必要があります。1つ目は、lessを使用してループを記述する方法です。次のlessコードを参照してください(詳細な説明はコードの下にあります)。 2.1 lessでループを実装する方法 以下にいくつか例を挙げます。 .loop(@counter) @counter > 0 の場合 { .h@{カウンター} { パディング: (10px*@counter); } .loop((@counter - 1)); // 自分自身を再帰的に呼び出す} div{ .ループ(5); } //コンパイルして出力 div .h5 { パディング: 50px; } div.h4 { パディング: 40px; } div.h3{ パディング: 30px; } div.h2{ パディング: 20px; } div.h1{ パディング: 10px; }
したがって、less がループを実装する方法は、定義された関数を再帰的に呼び出すことであると結論付けられます。 次に、2 番目の問題、つまり、less で JS 式を記述する方法を解決しましょう。 2.2 LessでJS式を書く方法 .loop(@counter) @counter > 0 の場合 { パディング: ~`@{counter} + Math.round(2.4)`; .loop(@counter - 1); // 自分自身を再帰的に呼び出す} div{ .ループ(2); } //次のコードを生成します div { パディング: 4; パディング: 3; } そこで、lessでjs式を使用するには、~で始めて、その式を``で囲むのがよいという結論に至りました。 次に、box-shadow プロパティを使用して何百もの星を生成するという 3 番目の問題を解決します。 2.3 ループを少なくしてbox-shadowプロパティに何百もの星を生成する方法 これらの星は実際には小さな四角い点です。まず 4 つの小さな四角い点を生成します。 // 分割 { 幅:10px; 高さ:10px; ボックスの影: 10px 0px #9bcded、50px 0px #9bcded、10px 40px #9bcded、50px 40px #9bcded; } 効果は以下のとおりです ここでは、複数のbox-shadow値を使用して正方形を生成します。 // たとえば、次の属性 10px 0px #9bcded は、div 要素を基準として、x 軸の 10px と y 軸の 0px に #9bcded 色の小さな点があることを意味します。 // div 自体は幅 10px、高さ 10px の正方形であるため、そのボックス シャドウも正方形のボックス シャドウです: 10px 0px #9bcded、 幅:10px; 高さ:10px; 次に、less ループを組み合わせて、ボックスシャドウ上にさらに多くのブロック (星) を生成する必要があります。 // まず、パラメータ@nを持つミックスイン関数を定義します。条件は、関数内のコードが@n > 0の場合にのみ実行されることです。mixin(@n) when(@n > 0) { box-shadow+ : ~`Math.round(Math.random() * 2000) + 'px' + ' ' +Math.round(Math.random() * 2000) + 'px #FFF' `; .mixin((@n - 1)); } 上記の関数は主にbox-shadowにあり、主に3つのパラメータが含まれています。
mixin(100)を呼び出すと、2000 * 2000の背景に100個の白い四角形(星)が生成されます。 ステップ3: HTMLを組み合わせて星を生成する 以前のHTML構造は次のようになります <div> <div id="start1"></div> <div id="start2"></div> <div id="start3"></div> </div> 以下は、その一部です。 // start1 は、長さ 1 ピクセル、幅 1 ピクセルの星を 700 個生成します。これらは小さな星です。// 小さな星は遠くにある星を表し、大きな星は近くにある星を表すため、空間の感覚が生まれます。#start1 { .mixin(700); 幅: 1px; 高さ: 1px; アニメーション: animStar 50 秒線形無限; アニメーション遅延:-10秒; } // start2 は長さ 2px、幅 2px の星を 200 個生成します #start2 { .mixin(200); 幅: 2px; 高さ: 2px; アニメーション: animStar 100 秒線形無限; アニメーション遅延:-8秒; } // start3 は長さ 3px、幅 3px の星を 100 個生成します #start3 { .mixin(100); 幅: 3px; 高さ: 3px; アニメーション:animStar 150秒線形無限; アニメーション遅延:-5秒; } // アニメーション効果は以下のとおりです @keyframes animStar { { transform: translateY(0px) } から { transform: translateY(-2000px) } に変更 } この記事は終了です。codepen にアクセスして、自分で効果を試すことができます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
>>: docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法
序文フロントエンドプログラミングでは、奇数、偶数などの数値を受け入れることができる nth-chil...
目次序文1. 取引の基本原則の簡単な分析原子性:持続性分離:一貫性: 2. 分離レベルの基本原理の分...
解決プロセス:方法1: CentOS7.3 のデフォルトのカーネル バージョンは低く、3.10.0-...
<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...
これは多くの人が遭遇した問題だと思います。実際、Web ページから FLASH をダウンロードして修...
sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...
Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...
border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...
Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...
MySQL データベースを最適化すると、データベースの冗長性を削減できるだけでなく、データベースの実...
目次序文最適化ソ連オンデマンドインポート1. ルーティングファイルでコンポーネントをオンデマンドでイ...
Mysqlリモート接続構成を実装する2つの方法会社で働いていると、誰かのコンピュータに保存されている...
目次レンダリングAPIの変更レンダリング関数のパラメータレンダリング関数のシグネチャの変更VNode...
コンピューターにmyeclipse2017とidea2017がインストールされているため、ideaが...
目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...