Domain 129 / 225
CLS(Cumulative Layout Shift)はページ読み込み中の視覚的ずれの累積
CLS の要点
CLS は読み込み中の予期しないレイアウト ずれの累積を 0-1 で表す指標。良好は 0.1 以下、不良は 0.25 超。画像 / 広告 / 動的挿入 / Web フォント / iframe が主な原因。size 属性 / aspect-ratio CSS / プレースホルダで予約することで防げる
なぜこれを学ぶか
CLS の改善は SEO 評価とユーザー体感の両方に効く。 読み込み中のガタガタが大きいサイトは離脱率が高く、SEO も評価が低い。
サイト体感を改善するすべての担当者で必須。
学ばないと起きること
| よくある事故 | 被害 |
|---|---|
| 画像に width / height なし | レイアウト確保せず CLS 悪化 |
| 動的コンテンツが既存要素を押し下げる | 読み込み中の文字クリックミス |
| Web フォントの FOIT で大幅レイアウト変動 | CLS 不良 |
学ぶメリット
- 体感品質の劇的向上
- CLS 0.1 以下を達成
- 商談で「CLS 改善 5 つの原因」を即答
仕組み
CLS の定義
公式: 読み込み中に発生したレイアウト変動の影響度を累積:
CLS = 影響範囲(viewport)× 移動距離(画面比)
| 評価 | 値 |
|---|---|
| 良好 | 0.1 以下 |
| 改善が必要 | 0.1-0.25 |
| 不良 | 0.25 超 |
CLS の主要原因
| 原因 | 例 |
|---|---|
| 画像 サイズ未指定 | width / height なし |
| 動的コンテンツ挿入 | バナー / 通知 / Cookie 同意 |
| 広告 | 後から挿入される広告枠 |
| Web フォント | フォント切替で文字幅変化 |
| iframe | 動的 iframe 挿入 |
| アニメーション | top / left での移動 |
キー概念
画像のサイズ確保
<img src="hero.jpg" width="1200" height="800" alt="...">
ブラウザがレイアウト計算前に空間予約。
CSS でも:
img {
aspect-ratio: 3/2;
width: 100%;
height: auto;
}
Web フォントの最適化
| 対策 | 効果 |
|---|---|
| font-display: swap | フォールバックですぐ表示 |
| size-adjust | 文字幅を調整 |
| ascent-override / descent-override | 高さ調整 |
| preload | 早期読み込み |
@font-face {
font-family: 'CustomFont';
src: url('font.woff2') format('woff2');
font-display: swap;
size-adjust: 100%;
ascent-override: 90%;
}
広告枠の確保
<div style="min-height: 250px;">
<!-- ここに広告が動的挿入される -->
</div>
最低高さを CSS で確保 → 挿入時の押し下げ防止。
動的コンテンツの位置
| 良 | 悪 | |
|---|---|---|
| 通知バナー | ページ最下部 / fixed | コンテンツ上部に挿入 |
| Cookie 同意 | overlay / modal | 既存コンテンツを押し下げ |
| 関連記事 | 最初から枠確保 | 後から流し込み |
transform を使ったアニメーション
/* 良い: transform は CLS 影響なし */
.card { transition: transform 0.3s; }
.card:hover { transform: translateY(-4px); }
/* 悪い: top の変更は CLS 影響 */
.card { position: relative; transition: top 0.3s; }
.card:hover { top: -4px; }
よくある誤解
| よくある誤解 | 実際のところ | 出典 |
|---|---|---|
| transform でも CLS に影響 | transform は CLS 計算対象外 | CLS ガイド |
| Cookie 同意は CLS 計算外 | ユーザー操作前は計算対象 | 同上 |
| デスクトップは CLS 関係なし | 全デバイスで測定 | 同上 |
実務での適用
画像の SEO チェックリスト
- 全画像に width / height 属性
- CSS で aspect-ratio 指定(レスポンシブ)
- lazy loading で off-screen 画像対応
- Next.js なら next/image 使用
Web フォント
- font-display: swap
- preload で重要フォント
- size-adjust で fallback 整合
動的コンテンツ
- 挿入前に枠確保
- 広告枠は min-height で予約
- オーバーレイ / モーダルで既存コンテンツに影響なし
トラブル別の対処
| 症状 | 確認すべきこと |
|---|---|
| CLS 0.1 超 | PageSpeed Insights の CLS 詳細で原因特定 |
| 特定操作で CLS 急増 | 該当操作の DOM 変動 |
公式ソース
自己テスト
Q1. CLS の良好基準は?
0.1 以下(不良は 0.25 超)
Q2. CLS の主要原因 5 つは?
画像サイズ未指定 / 動的コンテンツ挿入 / 広告 / Web フォント / iframe
Q3. transform と top の CLS 影響の違いは?
transform は CLS 計算対象外、top / left の変更は対象。アニメーションは transform で
これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。