キーポイント
- より良いアニメーションパフォーマンスを取得し、投稿または描画操作をトリガーするCSSプロパティのアニメーションを回避するには、
transform
やopacity
などの最新のブラウザーによって最適化されたプロパティを使用します。
アニメーション化される要素は、CSS - 属性を使用して独自のレイヤーに宣伝できますが、これはメモリと管理が必要なため、注意して行う必要があります。
will-change
この方法は、ブラウザの最適な時期にアニメーションコードを実行するため、 - を
requestAnimationFrame
に置き換えて、ラグのリスクを軽減し、よりスムーズなアニメーションを確保します。setTimeout/setInterval
HTML5キャンバスでの複雑な描画操作の場合、画面外のキャンバスを使用して、画面外のキャンバスですべての描画操作を実行し、各フレームでオフスクリーンキャンバスを描画することでパフォーマンスを向上させます。 - Webアニメーションの役割は、単純な装飾効果からユーザーエクスペリエンスにおける特定の役割に進化しました。たとえば、ユーザーがアプリケーションと対話する際に視覚的なフィードバックを提供し、アプリケーションの目標を達成するためにユーザーに焦点を合わせ、視覚的なヒントを提供するための視覚的なヒントを提供するユーザーはアプリケーションインターフェイスなどを理解しています。
これらの重要なタスクに対してWebアニメーションが能力があることを確認するために、ユーザーがアプリケーションで実行しようとすることを妨げるものではなく、ユーザーが援助としてそれを見ることができるように、動きを適切なタイミングでスムーズに実行する必要があることが重要です。
アニメーションのデザインが悪い可能性があります - jankfree.orgによって説明されているjank:
最新のブラウザは、デバイスのリフレッシュレートと同期して画面上のコンテンツを更新しようとします。今日のほとんどのデバイスでは、スクリーンは毎秒60回、つまり60Hzを再リッシュします。画面に何らかの動きがある場合(スクロール、トランジション、アニメーションなど)、ブラウザは毎秒60フレームを作成してリフレッシュレートに合わせて作成する必要があります。 st音とは、Webサイトまたはアプリケーションがリフレッシュレートに追いついていないときにユーザーが見ているst音、ジッター、または簡単な一時停止です。
この記事では、JavaScriptアニメーションの問題を解決し、60fps(1秒あたりのフレーム)の目標を簡単に達成し、ネットワーク上のスムーズな動きを可能にするために、いくつかのパフォーマンスのヒントを収集しました。アニメーションが詰まっている場合、ユーザーは最終的にアプリケーションとやり取りすることがますます少なくなり、成功に悪影響を及ぼします。明らかに、誰もそれを望んでいません。
1
CSSトランジション/CSSキーフレームまたはJavaScriptを使用してCSSプロパティをアニメーション化することを計画している場合、どのプロパティがページジオメトリを変更するか(レイアウト)を理解します。つまり、ページ上の他の要素の位置を再計算する必要があります。描画操作を伴う - これは非常に重要です。レイアウトと描画タスクは、特にページに複数の要素がある場合、ブラウザの処理が非常に高価です。したがって、操作を投稿または描画するCSSプロパティのアニメーション化を避け、transform
やopacity
などのプロパティに固執する場合、最新のブラウザーが最適化されているため、アニメーションパフォーマンスに大幅な改善が見られます。
CSSトリガーでは、最初の変更を含む、各最新のブラウザでトリガーするアクションに関する情報を含むCSSプロパティの最新リストを見つけることができます。
合成操作のみをトリガーするCSSプロパティを変更することは、Webアニメーションのパフォーマンスを最適化するために実行できるシンプルで効果的なステップです。
2は、自分のレイヤーにアニメーション化される要素を上げます(注意してください)アニメーション化される要素が独自のシンセサイザーレイヤーにある場合、一部の最新のブラウザはハードウェアアクセラレーションを使用して作業をGPUにオフロードします。適切に使用すると、これはアニメーションのパフォーマンスにプラスの影響を与える可能性があります。
要素を独自のレイヤーに配置するには、アップグレードする必要があります。 1つの方法は、CSS
プロパティを使用することです。このプロパティにより、開発者は、ブラウザが事前に必要な最適化を行うことができるように、要素にいくつかの変更を加えたいと事前にブラウザに警告することができます。
will-change
ただし、あまりにも多くの要素を自分のレイヤーに持ち上げたり、膨張させたりすることはお勧めしません。実際、ブラウザによって作成されたすべてのレイヤーには、メモリと管理が必要であり、高価な場合があります。
Nick SalloumのCSSの紹介でのその利点と短所の使用方法について詳しく知ることができます。
will-change
3を使用します
またはを使用してエンコードされます。 requestAnimationFrame
setTimeout/setInterval
コードは次のとおりです
と呼ばれるスムーズなWebアニメーション(DOMアニメーション、キャンバスなど)に設計されたネイティブJavaScriptメソッドを使用できます。 setInterval()
setTimeout()
あなたのコードは次のようになるかもしれません:
var timer; function animateElement() { timer = setInterval(function() { // 动画代码在此处 }, 2000); } // 要停止动画,请使用 clearInterval function stopAnimation() { clearInterval(timer); }
var timer; function animateElement() { timer = setInterval(function() { // 动画代码在此处 }, 2000); } // 要停止动画,请使用 clearInterval function stopAnimation() { clearInterval(timer); }SitePointでのTim Evkoの「RequestAnimationFrameによる更新パフォーマンス」は、
を使用したエンコードに関する素晴らしいビデオ紹介を提供します。 requestAnimationFrame()
4コードのアニメーションからイベントを分離します 1秒あたり60フレームで、ブラウザはその仕事をするためのフレームあたり16.67mしかありません。あまり時間がないので、コードを合理化することは、アニメーションの流encyさに影響を与える可能性があります。 スクロール、サイズ変更、マウスイベント、および画面の更新を処理するコードからのその他のイベントを処理するコードのデカップリングは、アニメーションコードのパフォーマンスを最適化する良い方法です。 この最適化のヒントと関連するサンプルコードの詳細な議論については、Paul Lewisの作成をチェックしてください。
5
ブラウザは、メインスレッドを使用してJavaScriptを実行し、スタイル計算、レイアウト、描画操作などの他のタスクを実行します。長期にわたるJavaScriptコードは、これらのタスクに悪影響を与える可能性があり、フレームがスキップされ、アニメーションがst音を発生させる可能性があります。そのため、コードを簡素化することは、アニメーションがスムーズに実行されるようにするための素晴らしい方法です。 requestAnimationFrame()
6ブラウザ開発者ツールを使用して、パフォーマンスの問題を制御します ブラウザの開発者ツールは、JavaScriptコードまたはサードパーティライブラリを実行するブラウザの難易度を監視する方法を提供します。また、フレームレートなどに関する実用的な情報も提供します。
Webページを右クリックしてCheck In Contextメニューを選択して、Chrome DevToolsにアクセスできます。たとえば、パフォーマンスツールを使用してWebページを録音すると、そのページのパフォーマンスボトルネックを詳細に理解できます。
「録音」ボタンをクリックして、数秒後に録音を停止します:
この時点で、ページのパフォーマンスを分析するのに役立つ多くのデータが必要です。
このChrome DevToolsガイドは、Chromeブラウザ内のパフォーマンスや他の多くのタイプのデータを分析するために、DevToolsを最大限に活用するのに役立ちます。 Chromeが選択したブラウザでない場合は、今日のほとんどの最新のブラウザには、コードを最適化するために使用できる強力なDevToolsが付属しているため、問題ありません。
この手法は、HTML5キャンバスコードの最適化に特に関連しています。
フレームに複雑な描画操作が含まれている場合、変更が発生したときにすべての描画操作を1回または1回だけ行い、各フレームにオフスクリーンキャンバスのみを描画することです。
MDNの最適化キャンバス記事のこのヒントについて詳細な情報とコードの例などを見つけることができます。
結論
コードパフォーマンスの最適化は、今日のネットワークでのユーザーの期待に応えたくない場合に必要なタスクですが、決して簡単ではありません。アニメーションのパフォーマンスの低下にはいくつかの理由があるかもしれませんが、上記のヒントを使用しようとすると、最も一般的なアニメーションパフォーマンストラップを避けて、ウェブサイトまたはアプリのユーザーエクスペリエンスを改善するための大きな一歩を踏み出します。LagsのないJavaScriptアニメーションのFAQ(FAQ) JavaScriptアニメーションの「st音」の概念は何ですか?
「Stutter」とは、Webサイトまたはアプリケーションがリフレッシュレートに追いついていないときにユーザーが見ているst音、ジッター、または単純な一時停止を指します。 JavaScriptアニメーションでは、フレームレートが毎秒標準60フレームを下回っているときにラグが発生する可能性があります。これにより、スムーズなアニメーションが少なくなり、視覚的に魅力的ではなくなり、ユーザーエクスペリエンスに悪影響を与える可能性があります。
スムーズなJavaScriptアニメーションを確保する方法は?JavaScriptアニメーションをスムーズにするには、コードを最適化して、1秒あたりの安定した60フレームを維持します。これは、ブラウザがアニメーションを最適化できるようにする
メソッドを使用することで実現できます。また、CSSトランジションまたはアニメーションを使用してシンプルなアニメーションを使用することもできます。これは、一般にJavaScriptよりも効率的であるためです。さらに、レイアウトジッターは、DOMの読み取りおよび書き込み操作を一緒にバッチすることで回避されます。
JavaScriptアニメーションにおけるその役割は何ですか?
JavaScriptのrequestAnimationFrame
requestAnimationFrame
CSSの遷移とアニメーションは、ブラウザのシンセサイザースレッドで処理され、メインのJavaScriptスレッドから分離されているため、JavaScriptよりも効率的になる場合があります。これは、メインスレッドが他のタスクで忙しい場合でも、スムーズに実行できることを意味します。さらに、特定のプロパティは、再描画を引き起こすことなくCSSでアニメーション化することができ、特に効率的になります。
レイアウトジッターとは何ですか?また、JavaScriptアニメーションでそれを避ける方法は? requestAnimationFrame
will-change
属性最適化JavaScriptアニメーションを使用する方法は?
CSSの
will-change
属性最適化JavaScriptアニメーションを使用する方法は? プロパティを使用すると、必要になる前に適切な最適化を設定できるように、要素にどのようなタイプの変更を作成するかを事前にブラウザに通知することができます。これにより、アニメーションのパフォーマンスが大幅に向上する可能性があります。ただし、ブラウザが最適化に時間がかかりすぎる可能性があるため、慎重に使用してください。 will-change
JavaScriptアニメーションでは、
およびtransform
プロパティは何を意味しますか? opacity
cssのおよびtransform
プロパティは、アニメーションに特に効率的です。これは、これらのプロパティの変更を、レイアウトや描画なしでブラウザのシンセサイザースレッドで処理できるためです。これは、メインのJavaScriptスレッドがビジーであっても、スムーズに実行できることを意味します。 opacity
JavaScriptのWebワーカーを使用すると、メインの実行スレッドとは別に、バックグラウンドでスクリプトを実行できます。これは、メインスレッドをブロックして遅延を引き起こすことなく、計算集約型タスクを処理できることを意味します。ただし、DOMやWeb APIにアクセスできないなど、いくつかの制限があります。
「非メインスレッド」アニメーションとは何ですか、JavaScriptアニメーションにどのように利益をもたらしますか?
「非メインスレッド」アニメーションとは、メインのJavaScriptスレッドとは別のスレッドでアニメーションを実行することを指します。これにより、メインスレッドがビジーであってもスムーズに実行できるため、アニメーションのパフォーマンスが大幅に向上する可能性があります。これは、CSSアニメーション、Webワーカー、またはWebアニメーションAPIを使用することで実現できます。
Web Animations APIを使用して効率的なJavaScriptアニメーションを作成する方法は?
Web Animations APIは、CSSアニメーションと同じように効率的に機能するJavaScriptを使用してアニメーションを作成する方法を提供します。 JavaScriptからアニメーションを直接制御および操作できるため、CSSアニメーションよりも柔軟性が高くなります。ただし、これは依然として実験的なテクノロジーであり、すべてのブラウザーで完全にサポートされていません。
以上がJank-Free JavaScriptアニメーションの7つのパフォーマンスのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps、whilejavascriptisforinteractivewebpages.1)javaiscompiled、staticatically、andrunsonjvm.2)javascriptisisterted、dynamsornoded.3)

JavaScriptコアデータ型は、ブラウザとnode.jsで一貫していますが、余分なタイプとは異なる方法で処理されます。 1)グローバルオブジェクトはブラウザのウィンドウであり、node.jsのグローバルです2)バイナリデータの処理に使用されるNode.jsの一意のバッファオブジェクト。 3)パフォーマンスと時間の処理にも違いがあり、環境に従ってコードを調整する必要があります。

javascriptusestwotypesofcomments:シングルライン(//)およびマルチライン(//)

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
