CSSアニメーションとSVGを組み合わせてエネルギーの流れの効果を作成する

CSSアニメーションとSVGを組み合わせてエネルギーの流れの効果を作成する

最終的な効果は次のようになります。

アニメーションは2つのステップに分かれています

  • ランニング軌道を開発する
  • DOMを作成し、パスに沿ってアニメーションする

ランニング軌道を開発する

まず、エネルギーの流れのパイプラインとして、下部に水色の半透明の道路を描く必要があります。ここでは SVG パスを使用します (実際には、ここで背景画像を直接使用できます)。コードは次のとおりです。

<!-- コードは react で書かれており、トラバーサルと一部のコードは削除されています -->

<svg>
    <!-- ツールの説明プロンプト。フィルタリングやその他の操作の塗りつぶしに使用されます。ボールの下部の輝きはここにあります -->
    <定義>
        <radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
            <stop offset="0%" style={{ stopColor: "rgba(2,246,255,.5)" }} />
            <stop offset="100%" style={{ stopColor: "rgba(2,246,255,0)" }} />
        </放射状グラデーション>
    </defs>
    <!-- ここでは、N 本の水色の線のパス d をパスとしてトラバースします -->
    <path d={item.path} ストローク="rgba(29,159,167,0.4)" 塗りつぶし="透明" ストローク幅={5}></path>
    ...
    <!-- 2 つの円を重ねて形成された光るボールです -->
    <g>
        <circle cx={cx} cy={cy} r="15" fill="url(#grad1)"></circle>
        <circle cx={cx} cy={cy} r="5" fill="rgba(2,246,255)"></circle>
    </g>
</svg>

DOMを作成し、パスに沿ってアニメーションする

ここでの核となる原則は、 offset-path プロパティを通じてモーション オフセット パスを設定し、次に offset-distance を通じてオフセットを設定することです。これにより、要素は CSS3 アニメーションを通じて特定の軌道に沿って移動できるようになります。

<!-- ここでは、パス ポイントが一貫しているように、ボックスと SVG ボックスが同じ幅と高さで揃っていることを確認する必要があります -->
<div className={styles.animate}>
    <!-- ここでは N 個の div をトラバースし、各 div を offsetPath (SVG のパスの d の値) に従ってフローさせます -->
    <!-- 負の animationDelay はレンダリング前に実行されることを意味し、レンダリング中にパス全体をカバーできます -->
    <div key={index} className={styles.point3} style={{ "offsetPath": "path('M 105 34 L 5 34')", "animationDelay": `-${index * 1}s`, "animationDuration": '5s', 'animationPlayState': `${stop ? 'paused' : 'running'}` }}></div>
    ...
</div>
.point3 {
    幅: 10px;
    高さ: 2px;
    // オフセットパス: path('M 248 108 L 248 172 L 1510 172');
    オフセット距離: 0%;
    アニメーション: フロー 20 秒 線形 法線 無限;
    背景画像: 線形グラデーション(右へ、rgba(255, 255, 255, 0) 10%、#FEFE02);
    位置: 絶対;
    左: 0;
    右: 0;
}
}

@keyframesフロー{
    から {
        オフセット距離: 0%;
    }

    に {
        オフセット距離: 100%;
    }
}

これで、SVG で CSS アニメーションを使用してエネルギー フロー効果を作成する方法についての説明は終了です。SVG で CSS アニメーションを使用する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL の current_timestamp の落とし穴とその解決策を共有する

>>:  サーバー同時実行数の推定式と計算方法

推薦する

MySQLの一般クエリログとスロークエリログの分析

MySQL のログには、エラー ログ、バイナリ ログ、一般クエリ ログ、スロー クエリ ログなどが含...

MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。

マスタースレーブレプリケーションがなぜ必要なのでしょうか? 1. 複雑な業務システムでは、SQL 文...

CentOS7でFTPサーバーを設定する方法

FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...

CSS の両端揃えを実現する div+css レイアウトの 4 つの方法の概要

2 端揃えを実現する div+css レイアウトは、Web ページの組版でよく使用されます。この記事...

IDEA Maven プロジェクトで Tomcat をデバッグ モードで実行する詳細なチュートリアル

1. pom.xmlに次の依存関係を追加します。 <依存関係> <groupId&...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

MySQL インデックスのクイックガイド

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

MySQL データ分析ストレージエンジンの例の説明

目次1. 事例紹介2. システムのデフォルトのストレージエンジンとデフォルトの文字セットを表示する3...

ES6のシンボルデータ型について詳しく説明します

目次シンボルデータタイプシンボルが表示される理由シンボルの特徴シンボルの応用rbオブジェクトにupメ...

Nginx 仮想ホストの詳細な分析

目次1. 仮想ホスト1.1 仮想ホストの概念1.2 仮想ホストタイプ2. IP仮想ホストに基づく2....

Django が uwsgi+nginx プロキシで静的リソースにアクセスできない問題の解決方法

uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...

Mysqlはストアドプロシージャを通じて文字列を配列に分割します

文字列を配列に分割するには、次の 3 つの MySQL 関数を使用する必要があります。 REVERS...

JavaScript ではおそらく switch 文を使う必要はない

目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...

コードをセマンティックにする HTML のヒント

HTML のセマンティクスはありふれた問題のようです。Google で検索すると、セマンティクスに関...