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 ディープページング問題の解決の実践記録

推薦する

Alibaba Cloud Server Ubuntu 設定チュートリアル

Alibaba Cloud のカスタム Ubuntu イメージのインポートには、OSS スナップショ...

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

7つの基本的なXHTMLコーディングルールの概要

1. すべてのタグには対応する終了タグが必要です以前の HTML では、<p> や &l...

CSS3+JavaScript を使用したクールな呼吸効果のサンプル コード

CSS3 アニメーションで実現したシンプルでクールな効果。最終的な効果は次のようになります。 ページ...

MySQL でコマンドを使用して階層検索を実現する方法の詳細な説明

序文この記事は主にMySQLコマンド階層検索ヘルプの使用に関する内容を紹介します。この記事のサンプル...

ウェブサイトのパフォーマンスを向上させるために画像を最適化する方法

目次概要画像圧縮とはJPEG/JPG JPGの利点JPGの使用シナリオJPGの欠点MozJPEG を...

JS でパブリッシュ サブスクライブ モデルを作成する

目次1. シーン紹介2 コードの最適化2.1 ファンを増やす問題を解決する2.2 作品追加の問題を解...

MySQL マスタースレーブレプリケーション構成プロセス

メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...

https ウェブサイトを展開し、Nginx でアドレス書き換えを構成するための詳細な手順

Nginx は、高性能な Web サイト サーバーおよびリバース プロキシ サーバーであり、IMAP...

Linux での Tomcat8 のインストールとアンインストールに関する詳細なグラフィック チュートリアル

[ Tomcat8 の Linux インストール ] Tomcat をアンインストールする - まず...

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

この記事ではCSSの組み合わせセレクターの使い方を説明します

CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...

Reactでコンポーネントがどのように通信するかの詳細な説明

1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。コンポーネントコ...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...