🎨
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-radiusやbox-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