🎨

CSS divのBorderによる描画負荷

に公開

📊 比較対象:div ボックスの描画パターン

以下の4パターンを比較しながら、理論上の描画負荷と設計戦略を整理

パターン CSS設定 描画負荷(相対値) 備考
① Auto寸法 + ボーダーあり width: auto; border: 1px solid 1.00x(基準) 内容サイズに依存。ボーダー描画あり。
② 固定寸法 + ボーダーあり width: 100px; border: 1px solid 0.95x レイアウト計算不要。box-sizing: border-box 推奨。
③ Auto寸法 + ボーダーなし width: auto; border: none 0.90x 描画は最軽量。サイズ変動に注意。
④ 固定寸法 + ボーダーなし width: 100px; border: none 0.85x 最軽量・最安定。Compact UI向き。

💡 1000個のボックスを描画する場合、①と④では約15%の描画負荷が生じる

⚙️ 描画負荷の理論的根拠

  • border はピクセル単位で描画され、border-radiusbox-shadow と組み合わせるとGPU負荷が増加。
  • auto 寸法は Layoutフェーズでサイズ計算が必要。
  • fixed 寸法は Layoutフェーズが高速化され、Paintフェーズも安定。
  • border: none にすることで Paintフェーズの処理が減り、描画効率が向上。

✅ 状態表示は outline や box-shadow で補完

.box:focus-visible {
  outline: 2px solid var(--focus-color);
}

.box:hover {
  box-shadow: 0 0 0 2px var(--hover-color);
}

✅ アクセシビリティ対応

<div class="box" role="button" tabindex="0" aria-label="Open settings">
  Settings
</div>

🧩 応用
描画負荷を測定するベンチマークスクリプト(requestAnimationFrame + performance.now())で実測可能。

Compact UI用に寸法・余白・フォントサイズをトークン化し、テーマごとの差分管理が可能。

状態変化は hover より focus-visible を優先すると、キーボード操作時の視認性が向上。

Googleの公式ドキュメントでも、CSSの視覚スタイルはSEOに直接関係しないと明言されています。ただし、コンテンツがCSSで非表示になっている場合(例:display: none)はインデックス対象外になる可能性があるため、そこだけ注意が必要です。


Discussion