今日の記事では、サイトのパフォーマンスを向上させるためにCSSで行えるコードの選択について考察します。しかし、これらの選択肢を詳しく説明する前に、まずWebページのレンダリングワークフローを詳しく見てみましょう。CSSを介して解決可能な問題のある(パフォーマンス的な)分野. これは、DOMツリーの作成後にブラウザによって実行される操作の大まかな流れです。 スタイルを再計算(およびツリー作成をレンダリング). ブラウザは、DOMツリーの要素に適用されるスタイルを計算します。レンダリングされないノード(要素)をDOMツリーから破棄しながら、レンダリングツリーが後で作成されます。 表示:なし)とであるもの(擬似要素). レイアウト(リフロー). 以前に計算されたスタイルを使用して、ブラウザはページ上の各要素の位置とジオメトリを計算します。. 再塗装. レイアウトがマッピングされると、ピクセルが画面に描画されます. 複合層. 再塗装中、塗装は異なるレイヤーで自律的に行われることがあります。それらのレイヤーは、最終的に一緒に結合されます. それでは、パフォーマンスの高いCSSコードを書くために、操作の最初の3段階でできることを続けましょう。. 1.スタイル計算を減らす 前述のように、「スタイルの再計算」段階では、ブラウザは要素に適用されるスタイルを計算します。これを行うために、ブラウザはまず、DOMツリー内の特定の要素ノードを指すCSS内のすべてのセレクタを見つけます。それから、それはそれらのセレクターのすべてのスタイルルールを通り抜けて、どれが実際に要素に適用されるべきであるかについて決定します. 画像:Aerotwist費用のかかるスタイル計算を避けるため, 複雑でネストしたセレクタを減らす ブラウザがどの要素をセレクタが参照しているのかを判断しやすくするためです。これにより計算時間が短縮されます。. その他の採用方法 スタイルルールの数を減らす (可能であれば), 未使用のCSSを削除する そして避けて 冗長性とオーバーライド, スタイル計算中にブラウザが同じスタイルを何度も繰り返す必要がないようにする. 2.リフローを減らす 要素内のリフローやレイアウト変更は非常に「高価な」プロセスであり、レイアウト変更を経た要素にかなりの量の子がある場合、それらはさらに大きな問題になる可能性があります。 階層を下ってカスケードするリフロー). 高さやフォントサイズなどの幾何学的プロパティの変更、要素へのクラスの追加または削除、ウィンドウのサイズ変更、アクティブ化など、要素に対するレイアウトの変更によって、リフローが発生します。 ホバー, JavaScriptなどによるDOMの変更....