モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

1. CSS、jQuery、Canvasを使用してアニメーションを作成する

1. キャンバス

利点: パフォーマンスが良好、強力、ほとんどのブラウザをサポート (IE6、IE7、IE8 を除く)、描画したグラフィックを .png または .jpg グラフィックとして直接保存できます。

デメリット: HTML に依存し、スクリプトを通じてのみグラフィックを描画でき、アニメーションを実装するための API がありません (イベントとタイマーの更新に依存)。プログラムによってキャンバス上に表示されるテキストは実際にはビットマップであるため、検索クローラーはテキストを完全に無視します。テキストコンテンツもスクリーンリーダーでは読み取れません。

2.css3

利点: シンプルでコンテンツから分離されており、CSS アニメーションはレイアウトとペイントをトリガーしません (これらのプロパティを変更してもレイアウトとペイントはトリガーされません: backface-visibility、opacity、perspective、perspective-origin、transform)。

デメリット: ブラウザの互換性の問題があり、Android フォンがフリーズする可能性があり、タイプセッティング エンジンによって制限され、ページ全体の DOM 構造に密接に関連しています。

3. クエリ

利点: 互換性の問題がない

デメリット: すべてのフレームを再描画して再合成する必要がある (非常に時間がかかります)。

要約: モバイル アニメーション効果に関しては、CSS3 アニメーションを使用する方が jQuery アニメーションを使用するよりもはるかに効率的です。これは特に Android スマートフォンに当てはまります。そのため、モバイルアニメーションは CSS3 アニメーションよりも優先され、jQuery はアプリケーションロジックを単純に処理するためにのみ使用できます。 CSS3 アニメーションは、コンテンツのレイアウトに特殊効果を追加するための汎用的なソリューションですが、パフォーマンスの低いモバイル ブラウザーではレイアウトのパフォーマンスが制限され、目的の効果が得られない場合があります。ゲームなど、高いパフォーマンスが求められる特定のシナリオでは、キャンバスを使用するとパフォーマンスが大幅に向上します。

2. CSS3はモバイルデバイス上でフリーズする問題がある

CSS3 で作成されたアニメーションは iOS では 66% 実行されますが、Android では遅延が発生する場合があります。以下の点から問題を探してみるとよいでしょう。

a. レイアウトに影響を与えるかどうか
その場合は、ドキュメント ツリーに影響を与えないようにし、リフローを減らすために、アニメーション要素を可能な限り絶対的または固定的にします。

b. ハードウェアアクセラレーションを有効にするかどうか
「CSS3 アニメーションの使用」と「ハードウェア アクセラレーションの有効化」は異なるものですが、前者は後者につながる可能性があります。
Webkit には、ハードウェア アクセラレーションを有効にする魔法の万能薬があります: opacity: 1; または -webkit-backface-visibility: hidden;。

c. コストの高い属性はありますか (CSS シャドウ、グラデーション、background-attachment: fixed など)
可能であれば、写真もオプションです。これは、空間と時間を交換する最適化とみなすことができます。

d. 再描画領域がある場合は、アニメーション領域を縮小する必要があります。このステップでは最適化は制限されています。

e. アニメーションを生成するには、transform を使用するようにし、height、width、margin、padding などは使用しないようにします。以下の例 1 と 2 を参照してください。

PS: トランスフォームを使用すると、ブラウザはこの要素のビットマップを 1 回生成し、アニメーションの開始時に GPU に送信して処理するだけで済みます。その後、ブラウザはレイアウト、描画、またはビットマップの送信操作を実行する必要がなくなります。したがって、ブラウザは GPU を最大限に活用して、さまざまな位置にビットマップをすばやく描画したり、回転やスケーリングを実行したりできます。つまり、変換アニメーションは GPU によって制御され、ハードウェア アクセラレーションをサポートし、ソフトウェア レンダリングは必要ありません。

3. アニメーション処理中にちらつきが発生する(通常はアニメーションの開始時に発生します)

解決:

.キューブ{

   -webkit-backface-visibility: 非表示;

   -moz-backface-visibility: 非表示;

   -ms-backface-visibility: 非表示;

   背面の可視性: 非表示;

   -webkit-perspective: 1000;

   -moz-perspective: 1000;

   -ms-パースペクティブ: 1000;

   視点: 1000;

   /* その他の変換プロパティはここに記載 */

}

Webkitベースのブラウザでは、もう1つの効果的な方法は

.キューブ{

   -webkit-transform: translate3d(0, 0, 0);

   変換: translate3d(0, 0, 0);

   -ms-transform: translate3d(0, 0, 0);

   変換: translate3d(0, 0, 0);

  /* その他の変換プロパティはここに記載 */

}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  HTML でスクロールバーを使用する際のヒントを共有する

>>:  MySQLがブール型を返すいくつかの状況について簡単に説明します。

推薦する

Vue の匿名スロットと名前付きスロットの詳細な説明

目次1. 匿名スロット2. 名前付きスロット要約するスロット (slot) は、Vue のコンテンツ...

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...

Linux Jenkins 構成スレーブノード実装プロセス図

序文: Jenkins のマスター スレーブ分散アーキテクチャは、主に、Jenkins に単一ポイン...

ローカルサーバーを構築するためのwebpack-dev-serverの実装

目次序文webpack-deb サーバーwebpack-dev-server 起動エラー解決策1解決...

MySqlデータベースをバックアップするいくつかの方法

mysqldump ツールのバックアップデータベース全体をバックアップする $> mysqld...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

MySQL接続クエリにおけるととwhereの違いの簡単な分析

1. テーブルを作成する テーブル「学生」を作成( `id` int(11) NULLではない、 `...

momentJs を使用してカウントダウン コンポーネントを作成する (サンプル コード)

今日はvueとmomentで作ったカウントダウンを紹介したいと思います。具体的な内容は以下のとおりで...

CSS3 rgb と rgba (透明色) の使い方の詳しい説明

誰もが色にとても敏感だと思います。私たちの目が見るところにはどこにでも色があります。では、CSS で...

Hadoopカウンターとデータクリーニングの適用

データクリーニング (ETL)コアビジネスの MapReduce プログラムを実行する前に、まずデー...

CSSのさまざまな背景、使用シナリオ、テクニックの詳細な分析

この記事はGitHub https://github.com/qq449245884/xiaozhi...

CSSはコンテンツの高さが足りない場合にフッターを自動的に下部に固定します

UI カットのプロセスでは、ページはヘッダー、コンテンツ、フッターの 3 つの部分で構成されることが...

ウェブページの色特性の分類

色特性の分類あらゆる色は、赤、緑、青の三原色から構成されます。三原色の中で暖色なのは赤だけなので、作...

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

Dockerデータ管理とネットワーク通信の使用

Docker をインストールし、Docker コアとインストールを通じて簡単な操作を実行できます。 ...