国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド CSSチュートリアル CSS3を使用して60 FPSモバイルアニメーションを?qū)g現(xiàn)します

CSS3を使用して60 FPSモバイルアニメーションを?qū)g現(xiàn)します

Feb 19, 2025 pm 12:54 PM

Achieve 60 FPS Mobile Animations with CSS3

キーポイント

  • スムーズなモバイルアニメーションでは、クリティカルレンダリングパス(CRP)の合成ステップに注意を払う必要があり、transformopacityなどの屬性を使用して、前のステップの負(fù)擔(dān)を増やすことを避けます。
  • left、top、right、bottomtransformアニメーショントランジションの屬性を使用しないでください。アニメーションの先頭にあるアニメーションは、以前にレイヤーの安定性を決定します。
  • 1秒あたり60フレームの安定したフレームレートを達(dá)成するには、GPUを使用してアニメーションをレンダリングし、will-change屬性を介して別のレイヤーに要素を宣伝し、ブラウザーのレイアウトレンダリングまたは描畫を避けます。

この記事は、もともとOutSystemsで公開されました。 SitePointをサポートしてくれたパートナーに感謝します。

モバイルアプリでアニメーションを簡単に作成できます。また、次のヒントをフォローすると、モバイルアプリでアニメーション化するのも簡単です。最近では、誰もがモバイルデバイスでCSS3アニメーションを使用していますが、多くの人が誤って使用しています。多くの場合、ベストプラクティスは開発者によって見落とされています。これは、これらの慣行がなぜ存在するのか、なぜ彼らがそれほど強(qiáng)くサポートされているのかを人々が理解していないためです。機(jī)器の仕様は非常に広いです。したがって、コードが最適化されていない場合、ほとんどのユーザーに標(biāo)準(zhǔn)のエクスペリエンスを提供します。覚えておいてください:一部のハイエンドのフラッグシップデバイスは強(qiáng)力ですが、世界のほとんどの人は、これらの高性能デバイスと比較して、LCD畫面を備えたAbacusのようなデバイスを使用しています。 CSS3の力を正しく利用できるようにしたいと思います。これを行うには、最初に何かを理解する必要があります。

タイムラインの理解要素をレンダリングおよび処理するときにブラウザは何をしますか?このタイムラインは、キーレンダリングパスと呼ばれます

畫像出典:www.csstriggers.com

スムーズなアニメーションを?qū)g現(xiàn)するには、前のステップの負(fù)擔(dān)を増やすのではなく、合成ステップに影響するプロパティの変更に焦點(diǎn)を當(dāng)てる必要があります。 Achieve 60 FPS Mobile Animations with CSS3

    スタイル
  1. ブラウザは、要素に適用されるスタイルの計(jì)算を開始します - スタイルを再計(jì)算します。 Achieve 60 FPS Mobile Animations with CSS3

  2. レイアウト
  3. 次のステップでは、ブラウザは各要素の形狀と位置、つまりレイアウトを生成します。ここでは、ブラウザは幅や高さなどのページプロパティ、たとえばマージンまたは、Achieve 60 FPS Mobile Animations with CSS3 、left、top、rightを設(shè)定します。 bottom

  4. drawAchieve 60 FPS Mobile Animations with CSS3 ブラウザは各要素のピクセルをレイヤーに入力します。これは、これらのプロパティを指します:box-shadowborder-radius、color、background-color

    など。
  5. Composition これは、アニメーションを?qū)g行する場所です。これは、ブラウザがすべてのレイヤーを畫面に描畫するときだからです。 Achieve 60 FPS Mobile Animations with CSS3 最新のブラウザは、transformおよびopacity屬性を使用して、4つのスタイルの屬性をうまくアニメーション化できます。

    • 位置 - transform: translateX(n) translateY(n) translateZ(n);
    • ズーム - transform: scale(n);
    • 回転 - transform: rotate(ndeg);
    • 不透明 - opacity: n;

1秒あたり60フレームを達(dá)成する方法

これを覚えておいてください、今度はあなたの袖を転がして一生懸命働く時(shí)です。 HTMLから始めましょう。非常にシンプルな構(gòu)造を作成し、クラスにapp-menuに配置します。 layout

<div>
  <div></div>
  <div>
    <div></div>
  </div>
</div>

Achieve 60 FPS Mobile Animations with CSS3

間違った方法

.app-menu {
  left: -300px;
  transition: left 300ms linear;
}

.app-menu-open .app-menu {
  left: 0px;
  transition: left 300ms linear;
}
私たちが変更したプロパティを見ましたか?

left、top、right、bottomの屬性を使用する必要があります。これらは、ブラウザが毎回レイアウトパスを?qū)g行するように強(qiáng)制し、すべての要素の子要素に影響するため、スムーズなアニメーションを作成しません。結(jié)果は次のとおりです

Achieve 60 FPS Mobile Animations with CSS3

このアニメーションは十分にスムーズではありません。 DevToolsのタイムラインを使用して、舞臺(tái)裏で何が起こっているのかを確認(rèn)しました。結(jié)果は次のとおりです。

Achieve 60 FPS Mobile Animations with CSS3 緑の領(lǐng)域は、アニメーションをレンダリングするのにかかる時(shí)間を示します。このデータは、不規(guī)則なフレームレートとパフォーマンスの低下を示しています。 「緑のバーはfpsを意味します。ハイバーはアニメーションが60 fpsでレンダリングされることを意味します。低いバーは60 fps未満を意味します。そのため、理想的には、緑のバーが常にタイムライン全體で高く維持されたいです。赤いバーもst音を意味します。進(jìn)行狀況を測定する別の方法は、これらの赤いバーを排除することです。

変換を使用して

.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
}
.app-menu-open .app-menu {
  -webkit-transform: none;
  transform: none;
  transition: transform 300ms linear;
}
屬性は、レイアウトではなく、合成ステップに影響します。ここでは、アニメーションが始まる前にレイヤーが安定していることをブラウザに通知します。そのため、アニメーションをレンダリングする際の障害物は少なくなります。

transform

これは、タイムラインが反映する方法です:

Achieve 60 FPS Mobile Animations with CSS3

結(jié)果が良くなり始め、フレームレートは安定しているようであるため、アニメーションはよりスムーズに実行されます。

gpu

でアニメーションを?qū)g行します

次に、次のレベルに進(jìn)みましょう。本當(dāng)にスムーズに実行するために、GPUを使用してアニメーションをレンダリングします。

<div>
  <div></div>
  <div>
    <div></div>
  </div>
</div>

一部のブラウザはまだフォールバックとしてtranslateZ()またはtranslate3d()を必要としますが、will-change屬性は將來です。このプロパティは要素を別のレイヤーに促進(jìn)するため、ブラウザはレイアウトのレンダリングまたは描畫を検討する必要はありません。

Achieve 60 FPS Mobile Animations with CSS3

それがどれほどスムーズかわかりますか?タイムラインはこれを確認(rèn)しています:

Achieve 60 FPS Mobile Animations with CSS3

アニメーションのフレームレートはより一定であり、アニメーションのレンダリング速度が高速になります。しかし、最初はまだ長いフレームがあります。最初は少しボトルネックがあります。最初に作成したHTML構(gòu)造を覚えていますか? javascriptでapp-menudiv:

を制御する方法を見てみましょう
.app-menu {
  left: -300px;
  transition: left 300ms linear;
}

.app-menu-open .app-menu {
  left: 0px;
  transition: left 300ms linear;
}

ああ!ここでは、クラスをlayoutdivに追加することで問題を引き起こしています。これにより、ブラウザはスタイルツリーを再生します。これは、レンダリングパフォーマンスに影響します。

1秒あたり60フレームでのバターの滑らかな溶液

ビューポート領(lǐng)域の外にメニューを作成した場合はどうなりますか?隔離領(lǐng)域にメニューを置くことで、アニメーションに必要な要素のみに影響を與えることが保証されます。したがって、次のHTML構(gòu)造を使用することをお?jiǎng)幛幛筏蓼?

.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
}
.app-menu-open .app-menu {
  -webkit-transform: none;
  transform: none;
  transition: transform 300ms linear;
}
次に、メニューのステータスをわずかに異なる方法で制御する必要があります。 javaScriptの

関數(shù)を使用して、アニメーションの最後に削除されたクラスのアニメーションを操作します。 transitionend

.app-menu {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  transition: transform 300ms linear;
  will-change: transform;
}
すべてをまとめて結(jié)果を確認(rèn)しましょう。これは完全なCSS3対応の例です。すべてが適切な場所にあります:

function toggleClassMenu() {
  var layout = document.querySelector(".layout");
  if(!layout.classList.contains("app-menu-open")) {
    layout.classList.add("app-menu-open");
  } else {
    layout.classList.remove("app-menu-open");
  }
}
var oppMenu = document.querySelector(".menu-icon");
oppMenu.addEventListener("click", toggleClassMenu, false);

Achieve 60 FPS Mobile Animations with CSS3

タイムラインは私たちに何を示していますか?

Achieve 60 FPS Mobile Animations with CSS3

それはすべて緑色のストリップです、ベイビー。実用的な例を見たいですか?ここをクリック。 (実際のリンクはここに挿入する必要があります)

(モバイルアニメーションに関するFAQセクションをここに追加する必要があります。コンテンツは元のドキュメントのFAQセクションと一致しています)

以上がCSS3を使用して60 FPSモバイルアニメーションを?qū)g現(xiàn)しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動(dòng)的に追加するツールです。 1.エラーで接頭辭を手動(dòng)で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設(shè)定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動(dòng)で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお?jiǎng)幛幛筏蓼埂?/p>

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測定されていることを確認(rèn)してください

粘著性ヘッダーまたはフッターを作成するためのCSSチュートリアル 粘著性ヘッダーまたはフッターを作成するためのCSSチュートリアル Jul 02, 2025 am 01:04 AM

to CreateStickyheadersandfooterswithcss、使用ポジション:Stickyforheaderswithtopvalueandz-index、ParentContainersdon’trestrictit.1.forstickyheaders:Setposition:Sticky、Top:0、Z-Index、およびBackgroundColor.2

CSSカスタムプロパティの範(fàn)囲は何ですか? CSSカスタムプロパティの範(fàn)囲は何ですか? Jun 25, 2025 am 12:16 AM

CSSカスタムプロパティの範(fàn)囲は宣言のコンテキストに依存します。通常、グローバル変數(shù)は次のように定義されます。一方、ローカル変數(shù)は、スタイルのコンポーネント化と分離のために特定のセレクター內(nèi)で定義されます。たとえば、.cardクラスで定義されている変數(shù)は、クラスとその子供に一致する要素でのみ使用できます。ベストプラクティスには以下が含まれます。1。使用:ルートトピック色などのグローバル変數(shù)を定義する。 2。コンポーネント內(nèi)のローカル変數(shù)を定義して、カプセル化を?qū)g裝します。 3.同じ変數(shù)を繰り返し宣言しないでください。 4.セレクターの特異性によって引き起こされる可能性のあるカバレッジの問題に注意してください。さらに、CSS変數(shù)はケースに敏感であり、エラーを回避するために使用する前に定義する必要があります。変數(shù)が未定義の場合、または參照が失敗した場合、フォールバック値またはデフォルト値の初期が使用されます。デバッグは、ブラウザ開発者を介して実行できます

CSSアニメーションの可能性のロックを解除:ディープダイビング CSSアニメーションの可能性のロックを解除:ディープダイビング Jun 20, 2025 am 12:14 AM

cssanimationsenhancewebpagesbyurebrovinguserexperienceantity.1)usetransitionsforsmoothstylechanges、asinthebuttoncolorexample.2)雇用キーフレーズフォードテイル型の裝具、noceethebouncinging.3)

See all articles