1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【 CSS 】処理と速度って実際どうなの?気になったので調べてみた

Posted at

はじめに

日々CSSを書いている中で、こんな疑問がふと頭をよぎりました。

「このCSS、重くないかな?」
「positionっていっぱい使うと処理重いの?」
「描画が重くなるプロパティってどれ?」

今回は、CSSの処理の流れと、パフォーマンスに影響するプロパティの違いについて、自分なりに調べてまとめてみました。

CSSの処理について

ブラウザはHTMLとCSSを読み込んで、以下のような流れで画面を描画しています。

1.パース(解析)

  • HTML → DOMツリー
  • CSS → CSSOMツリー

→ 要素やスタイルの構造を「木構造」で理解。

2.スタイル計算(Style Calculation)

  • どのCSSがどの要素に適用されるかを決定。
  • セレクタの競合、継承、カスケードもここで処理。

3.レイアウト(Layout / Reflow)

  • 要素のサイズや位置を計算。
  • position, width, margin, display などが関係。

4.ペイント(Paint)

  • 色・影・枠線などをピクセルに変換。
  • background, border, box-shadow などが関係。

5.コンポジット(Compositing)

  • 複数レイヤーを合成して、最終的に画面に表示。

どんなCSSが「軽い」?どんなCSSが「重い」?

処理のステップごとに、影響のあるプロパティを分類してみました。

ステップ 軽いプロパティ 重いプロパティ
スタイル計算 color, font-size, visibility -
レイアウト再計算 - width, height, position, display
ペイント(描画) - box-shadow, border-radius
合成処理 transform, opacity(アニメ向き) filter, backdrop-filter, will-change

よくある「重くなる原因」まとめ

1.アニメーションで使うと重くなるプロパティ

/* 悪い例:毎フレームレイアウト再計算 */
.element {
  top: 100px;
  left: 0;
  transition: top 0.3s ease;
}

/* 良い例:GPU処理で高速 */
.element {
  transform: translateY(100px);
  transition: transform 0.3s ease;
}

2.position: fixed の多用

  • 各要素が別レイヤーになる
  • 合成処理が増えてメモリや描画コストが増大

使い方に注意したいプロパティ一覧

プロパティ 理由
filter: blur() GPU負荷が高い、スクロール時にカクつく
position: fixed 合成レイヤー増加、重くなる
box-shadow ペイントコストが高くなる(特に大きな影)
will-change 多用すると逆にパフォーマンス悪化する

さいごに

CSSは「見た目を整えるだけの言語」ではなく、ブラウザの描画処理に密接に関わるパフォーマンス要因でもあります。

  • どのプロパティが「レイアウト」や「ペイント」に影響するのか?
  • アニメーションで何を使うと最適か?

なぜそれが重くなるのか?

このあたりを少し意識するだけでも、見た目とパフォーマンスを両立したCSSが書けるようになると思います!

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?