パフォーマンス:変形可能なプロパティと再描画されるプロパティ
GPUアクセラレーションが適用されるプロパティと、コストの高いレイアウト再描画を引き起こすプロパティを学びます。
「パフォーマンス:変形可能なプロパティと再描画されるプロパティ」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
レンダリングパイプライン
ブラウザーは3段階でレンダリングします。レイアウト(サイズと位置)→ ペイント(ピクセル)→ コンポジット(GPUレイヤーの合成)です。より前の段階を引き起こすプロパティをアニメーションさせると、処理コストが高くなります。
レイアウトを引き起こすプロパティ
これらのプロパティを変更すると、ブラウザーはページ全体に及ぶ可能性のあるレイアウトの再計算を強制されます。アニメーションさせないでください。
width、heightmargin、paddingtop、leftfont-sizedisplay
ペイントを引き起こすプロパティ
これらはレイアウトを省略しますが、ピクセルを再ペイントします。処理コストは中程度です。
background-colorcolorbox-shadowborder
コンポジットのみで処理されるプロパティ
これらはレイアウトとペイントの両方を省略します。ブラウザーはラスタライズ済みのレイヤーを合成するだけで済みます。非常に低コストで、GPUアクセラレーションが適用されます。
transformopacity
CSSアニメーションの鉄則
滑らかな60fpsのアニメーションを実現するには、transformとopacityだけをアニメーションさせてください。top/leftの代わりにtransform: translate()を使い、displayを使ったフェードの代わりにopacityを使います。
<div class="box demo-active">Box</div>will-changeプロパティ
will-changeは、アニメーションの開始前に要素を専用のGPUレイヤーへ昇格するようブラウザーに伝えます。これにより、アニメーション中に発生する「昇格フラッシュ」を防げます。
<div class="animated">Animated</div>will-change: auto
アニメーションが完了したら、will-change: autoを設定するか、プロパティ自体を完全に削除してください。あまりに多くの要素を昇格したままにすると、GPUメモリを無駄に消費します。
DevToolsでの計測
Chrome DevToolsのPerformanceタブを使って、フレームのタイミングを記録・調査してください。Renderingタブではペイントフラッシング(緑色のオーバーレイ)を有効にでき、各フレームでどの要素が再ペイントされているかを確認できます。
top/leftの代わりにtransformを使う
最も効果の大きい最適化は、位置のアニメーションをtransformに置き換えることです。
<div class="fly demo-active">Fly</div>色のトランジションのコスト
背景色のトランジションは再ペイントを引き起こしますが、レイアウトは引き起こしません。小さな要素であれば問題ありません。大きな背景の場合は、代わりにopacityのトランジションを使う疑似要素の利用を検討してください。
<button class="btn demo-active">Hover me</button>containプロパティ
containプロパティは、要素とそのサブツリーが独立していることをブラウザーに示します。これによりレイアウトの無効化範囲が制限され、再ペイントのパフォーマンスが向上します。
<div class="widget">Widget</div>クイックチェック
レイアウトやペイントを引き起こさず、コンポジット段階でアニメーションできるCSSプロパティはどの2つですか。
振り返り
レイアウトプロパティ(width、top、margin)をアニメーションさせると、コストの高い再計算が発生します。ペイントプロパティ(color、background)はそれより低コストです。transformとopacityだけが、レイアウトやペイントを引き起こさずにGPUのコンポジット段階でアニメーションします。滑らかで高パフォーマンスなアニメーションには、常にこれらを優先してください。
よくある質問
「パフォーマンス:変形可能なプロパティと再描画されるプロパティ」レッスンは無料ですか?
はい。「パフォーマンス:変形可能なプロパティと再描画されるプロパティ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「パフォーマンス:変形可能なプロパティと再描画されるプロパティ」で何を学びますか?
GPUアクセラレーションが適用されるプロパティと、コストの高いレイアウト再描画を引き起こすプロパティを学びます。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「パフォーマンス:変形可能なプロパティと再描画されるプロパティ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- トランジションのプロパティ・期間・タイミング
- イージング関数:ease、linear、cubic-bezier
- 複数プロパティのトランジション
- パフォーマンス:変形可能なプロパティと再描画されるプロパティ