CSSアニメーションがJSによってブロックされるかどうかについての簡単な議論

CSSアニメーションがJSによってブロックされるかどうかについての簡単な議論

CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーションは影響を受けません。

以下は、js ブロッキング アニメーションを有効にした margin-left 移動アニメーションのパフォーマンス チャートです。

<スタイル>
.walkabout-old-school {
  アニメーション: 3 秒のスライド マージン 線形無限;
}
 
@keyframes スライドマージン {
  {margin-left: 0;} から
  50% {左マージン: 100%;}
  {margin-left: 0;} へ
}
</スタイル>
<スクリプト>
関数kill() {
  var start = +新しい日付;
  while (+新しい日付 - 開始 < 2000){}
}
</スクリプト> 

上の図では、kill メソッドを実行した後、アニメーションが 2 秒間停止してから続行されることが明確にわかります。

上の図から、js を有効にしてから 2 秒以内に、レンダリング プロセスは kill 関数が実行されるまで待機してから実行されることがわかります。下の図を見ると、マージンの変更によって DOM が再レイアウトされ、kill 関数が実行されるまでレイアウトが開始されないことがわかります。につながる

次に、アニメーションとして変換を使用する要素を確認します

.walkabout-new-school {
  アニメーション: 3 秒スライド変換線形無限;
}
@keyframes スライド変換 {
  {transform: translatex(0);} から
  50% {transform: translatex(300px);}
  {transform: translatex(0);} へ
}

次の図は実行中の比較チャートです(青はマージン、緑は変換)

上の図から、transformの使用はkillメソッドにまったく影響されないことがわかります。デバッグチャートを見てみましょう。

ここでは、margin は頻繁にページのリフローをトリガーしますが、transform はトリガーせず、js はページのリフローをブロックすることがわかります。そのため、マージンアニメーションが停止します。

したがって、日常生活でアニメーションを使用する場合は、変換をより頻繁に使用すると、最高のページパフォーマンスと効果を実現できます。

CSSアニメーションがJSによってブロックされるかどうかについてのこの記事はこれで終わりです。CSSアニメーションがJSによってブロックされるというより関連性の高いコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後とも123WORDPRESS.COMを応援してくれることを願っています!

<<:  Apple M1チップにnginxをインストールし、vueプロジェクトをデプロイする詳細な手順

>>:  MySQL ディープページング問題の解決の実践記録

推薦する

JVMシリーズのメモリモデルの詳細な説明

目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...

Dockerコンテナ監視の原理とcAdvisorのインストールおよび使用方法

本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...

MySQL 5.7.17 winx64 のインストールと設定のグラフィックチュートリアル

MySQL のインストールに関する以前のメモを要約して、皆さんと共有しました。ステップ 1: mys...

VMware Workstationはデバイス/資格情報ガードと互換性がありません

仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...

W3C が推奨するモバイル Web マークアップ言語 XHTML Basic 1.1

W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...

カタツムリ映画システムのDocker展開の詳細なプロセス分析

環境に関する声明ホストOS: Cetnos7.9 最小インストールdocker バージョン: 20....

Nginx のパラメータをオンにして Web パフォーマンスを 3 倍向上させる方法

1. 遭遇したいくつかの問題2008 年にパフォーマンス テストを行っていたとき、パフォーマンス テ...

JavaScript の重要なブレークポイント デバッグ手法の概要 (推奨)

目次デバッガーを使用する理由は何ですか? Chromeデバッガーの基本的な使い方VS Code によ...

熟練デザイナーの7つの原則(1):フォントデザイン

まあ、あなたはデザインの達人かもしれませんし、あるいはそれは大げさすぎるかもしれませんが、少なくとも...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...

UDP 接続オブジェクトの原理分析と使用例

以前、UDP を使い始めるために簡単な UDP サーバーとクライアントの例を作成しましたが、実際に使...

MySQL 8.0.22 解凍版インストールチュートリアル(初心者向け)

目次1. リソースのダウンロード2. ソフトウェアを解凍する2.1 場所を選択する2.2 名前を変更...

proxy_pass がパス パスに従って転送する場合の "/" 問題の詳細な説明

nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...

一般的な JavaScript メモリ エラーと解決策

目次1. タイマー監視2. イベント監視3.オブザーバー4. ウィンドウオブジェクト5. DOM参照...

MySQL 8.0はJSONを扱えるようになりました

目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...