JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? JavaScript の効率が低い主な理由は、DOM の操作とページアニメーションの使用の 2 つです。 通常、視覚的なアニメーション効果を実現するために、DOM と CSS を頻繁に操作します。これには、JS の効率が低下する原因となる 2 つの要因が含まれます。DOM と CSS を頻繁に操作すると、ブラウザは常にリフローと再描画を実行します。PC 版ブラウザでは、ブラウザの使用可能メモリが比較的大きいため、ユーザーはページ アニメーションによるリペイントとリフローを肉眼でほとんど確認できないため、エンジニアはアニメーションによるパフォーマンスの問題をあまり考慮する必要がありません。ただし、モバイル デバイスでは状況が大きく異なります。モバイル デバイスの組み込みブラウザに割り当てられるメモリは、PC 版ブラウザほど大きくありません。現在、CSS3 を最もよくサポートしているのは Webkit ブラウザです。Webkit カーネルを搭載したブラウザの中で、1 番目は Safari、2 番目は Chrome です。 JS シミュレーション アニメーションの代わりに CSS3 アニメーションを使用する利点:
CSS3 アニメーションは、2D、3D、および通常のアニメーション属性インターフェイスを提供します。ページ上の任意の要素の任意の属性で機能します。CSS3 アニメーションは C 言語で記述され、システムレベルのアニメーションです。 jsアニメーションを使用するかcss3アニメーションを使用するかは、開発者がさまざまなニーズに基づいてさまざまな選択を行う必要がありますが、基本的な原則に従う必要があります。2Dアニメーションを実行する必要がある場合は、CSS3トランジションまたはアニメーションを使用する必要があります。 CSS3 アニメーションと JavaScript シミュレーション アニメーションの違いは次のとおりです。
CSS3 プロパティ 2D変換 CSS3 変換を使用すると、要素を移動、拡大縮小、回転、伸縮、または長くすることができます。 変換属性は2Dまたは3Dに変換される要素に適用されます。 transform-origin属性、変換された要素の位置を設定する 1. translate() メソッドは、左 (X 軸) と上 (Y 軸) の位置で指定されたパラメータに従って、現在の要素の位置から移動します。 div { 変換: translate(50px,100px); -webkit-transform: translate(50px,100px); /* Safari と Chrome */ } 2.rotate() メソッドは、要素を指定された度数で時計回りに回転します。負の値も許可されており、要素は反時計回りに回転します。 div { 変換: 回転(30度); -webkit-transform: rotate(30deg); /* Safari と Chrome */ } 3. scale() メソッドでは、幅 (X 軸) と高さ (Y 軸) のパラメータに応じて要素のサイズが増減します。 div { -webkit-transform: scale(2,3); /* Safari / transform: scale(2,3); / 標準構文*/ } 4.skew([,]) には、それぞれ X 軸と Y 軸の傾斜角度を表す 2 つのパラメータ値が含まれます。2 番目のパラメータが空の場合、デフォルト値は 0 です。負のパラメータは、反対方向への傾斜を示します。 div { 変換: skew(30deg,20deg); -ms-transform:skew(30deg,20deg); /* IE 9 / -webkit-transform: skew(30deg,20deg); / Safari および Chrome */ } 3D変換 translate3d(x,y,z) は 3D 変換を定義します。 translateX(x)は、X軸の値のみを使用して3D変換を定義します。 translateY(y) は、Y 軸の値のみを使用して 3D 変換を定義します。 translateZ(z) は、Z 軸の値のみを使用して 3D 変換を定義します。 scale3d(x,y,z) は 3D スケーリング変換を定義します。 scaleX(x) は、x 軸に沿った値を指定して 3D スケーリング変換を定義します。 scaleY(y) は、Y 軸に沿った値を指定して 3D スケーリング変換を定義します。 scaleZ(z) は、z 軸に沿った値を指定して 3D スケーリング変換を定義します。 rotate3d(x,y,z,angle) は 3D 回転を定義します。 rotateX(angle) は、X 軸を中心とした 3D 回転を定義します。 rotateY(angle) は、Y 軸を中心とした 3D 回転を定義します。 rotateZ(angle) は、Z 軸を中心とした 3D 回転を定義します。 perspective(n) 3D 変換された要素の透視ビューを定義します。 CSS3 トランジション transition ショートハンド プロパティ。1 つのプロパティで 4 つの transition プロパティを設定するために使用されます。 transition-property トランジションが適用される CSS プロパティの名前を指定します。 transition-duration は、遷移効果にかかる時間を定義します。デフォルトは0です。遷移期間: 5秒; transition-timing-function は、トランジション効果のタイミング カーブを指定します。デフォルトは「ease」です。 linear は、同じ速度で開始および終了する遷移効果を指定します (cubic-bezier(0,0,1,1) に相当)。 easy は、ゆっくり始まり、その後加速し、そしてゆっくり終わる遷移効果を指定します (cubic-bezier(0.25,0.1,0.25,1))。 easy-in は、ゆっくり始まる遷移効果を指定します (cubic-bezier(0.42,0,1,1) に相当)。 easy-out は、ゆっくり終了する遷移効果を指定します (cubic-bezier(0,0,0.58,1) に相当)。 easy-in-out は、ゆっくりと開始および終了する遷移効果を指定します (cubic-bezier(0.42,0,0.58,1) に相当)。 cubic-bezier(n,n,n,n) は、cubic-bezier 関数で独自の値を定義します。可能な値は0から1までの数値です。 transition-delay は、遷移効果がいつ開始するかを指定します。デフォルトは0です。遷移遅延: 2秒; CSS3アニメーション @keyframes はアニメーションを指定します。 animation は、animation-play-state プロパティを除くすべてのアニメーション プロパティのショートカット プロパティです。 animation-name は、@keyframes アニメーションの名前を指定します。 animation-duration は、アニメーションが 1 サイクルを完了するのにかかる秒数またはミリ秒数を指定します。デフォルトは0です。 animation-timing-function は、アニメーションの速度曲線を指定します。デフォルトは「ease」です。 animation-fill-mode は、アニメーションが再生されていないとき (アニメーションが完了したとき、またはアニメーションの再生が開始されない遅延があるとき) に要素に適用するスタイルを指定します。 animation-delay はアニメーションがいつ開始するかを指定します。デフォルトは0です。 animation-iteration-count はアニメーションを再生する回数を指定します。デフォルトは 1 です。 animation-direction は、次のサイクルでアニメーションを逆方向に再生するかどうかを指定します。デフォルトは「通常」です。 animation-play-state は、アニメーションが実行中か一時停止中かを指定します。デフォルトは「実行中」です。 要約する 上記は、CSS3 を使用してトランジション効果とアニメーション効果を実現する方法についてご紹介したものです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます! |
<<: 選択/フォーカス時にすべてのオプションをリストする現在のより良い方法
取引の実施REDO ログはトランザクションの永続性を保証し、UNDO ログはトランザクションのロール...
良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...
docker logs コマンドを使用してコンテナ ログを表示できます。コマンド形式: $ dock...
# Windows および Linux 上の Redis のインストール デーモン構成Redis の...
概要実際のビジネス シナリオ アプリケーションでは、ビジネス条件に基づいて対象データを取得およびフィ...
1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...
memcachedをインストールする yum インストール -y memcached #memcac...
背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...
1. 現在のスクリプトの実際のパスを取得します。 #!/bin/bash if [[ $0 =~ ^...
目次posgresql バックアップ/リストアMySQL バックアップ/復元posgresql バッ...
目次1. MySQL マスタースレーブレプリケーションの原理2. MySQLのコンパイルとインストー...
animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...
1. Web標準の意味を理解する - なぜWeb標準を採用するのか***** コンテンツとスタイル...
この記事では、天気予報機能を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容...
目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...