HTML5、CSS3、jQueryMobile を使用して非常に複雑な Web アプリを作成しました。
jQueryMobile は、translate3D
and/orを介してあちこちでハードウェア アクセラレーションをオンにしているようですtranslateZ
。
ここで、特定の HTML 要素に対してこれをオフにしたいと考えています。
これは私に2つの質問を与えます:
- 特定の要素のハードウェア アクセラレーションをオフにするようにブラウザーに指示するために使用できる css プロパティ/属性または何かがありますか?
translate3D
そうでない場合:またはが使用されている場所を見つけてtranslateZ
、単純に削除する必要がありますよね? どうやってやるの?マークアップ全体は、多くの HTML 要素で非常に複雑です。インスペクターで各要素を調べて検索することはできません。
更新: これを修正したい理由
私の Web アプリには、スワイプ可能にする必要がある要素がいくつかあります (画像ギャラリーなど)。この場合、ハードウェア アクセラレーションが必要です。iScroll を必要とする div コンテナと、アニメーション化する必要がある他のすべての要素 (スライド アニメーションやフェード アニメーションなど) についても同様です。
ただし、静的な (アニメーション化されていない) アプリの多くの部分があります。Safari の特別な起動オプションを使用して、ハードウェア アクセラレーションが適用される部分を可視化することができました。このようにして、必要な部分だけでなく、アプリ全体がハードウェア アクセラレーションされることに気付きました。
IMHOこれは良いことではありません。
- 全体を高速化すると GPU に大きな負荷がかかり、スクロール中にアプリ全体がカクカクします。
- 私の知る限り、CPU に静的なものを実行させ、GPU は派手なアニメーション処理のみを処理するのがベスト プラクティスです。
- アニメーションが終了したら、ハードウェア アクセラレーションを無効にする必要があります。ハードウェア アクセラレーションは不要になり、バッテリーの寿命が短くなるからです。