CLSが大きい(表示中に画面がずれる)

CLSは「表示中に画面のレイアウトがどれだけずれたか」の指標です。読んでいた文章が急に下がる、押そうとしたボタンがずれて別のものを押す、という体験の数値化です。原因はほぼ3つに絞られ、いずれも対処法が確立しています。

公開日: 2026年8月16日 / 最終更新日: 2026年9月6日

カテゴリ: パフォーマンス / 影響度: 高 / 想定工数: 3時間 / ルールID: cls_poor

この指標の意味

CLS(Cumulative Layout Shift)は、ページの読み込み中や操作中に発生したレイアウトのずれを累積した値です。Googleの公表基準では0.1以下が「良好」、0.25超が「不良」です。

速度の指標ではなく「安定性」の指標である点が特徴です。速いページでもCLSが悪いことは普通にあります。

Smash SEOの検出条件

各ページのCLSをPageSpeed Insights API経由で取得し、0.25を超えるページを重大判定、0.1〜0.25を警告判定します。Googleの公表基準そのままです。

あわせて、CLSの主要原因である「画像のwidth/height未指定」「Webフォントのdisplay設定」「広告枠のプレースホルダー未確保」をそれぞれ個別ルールとして検出します。

原因1: 画像のサイズ未指定

最も多い原因です。imgタグにwidth/heightが無いと、ブラウザは画像を読み込むまで高さを確保できず、読み込み完了時に後続のコンテンツを押し下げます。

対処: サイズを明示する

<!-- ずれる -->
<img src="/photo.jpg" alt="商品写真" />

<!-- ずれない: 実寸を指定(CSSで縮小表示してもアスペクト比が確保される) -->
<img src="/photo.jpg" alt="商品写真" width="1200" height="800" />

原因2: Webフォントの読み込み

フォント読み込みの前後で文字の大きさが変わり、行数が変わってレイアウトがずれるパターンです。font-displayの設定と、フォントのpreloadで軽減できます。

対処: swap指定とpreload

@font-face {
  font-family: "CustomFont";
  src: url("/fonts/custom.woff2") format("woff2");
  font-display: swap;
}

原因3: 広告・埋め込みの枠

広告やSNS埋め込みが読み込まれた瞬間に、その高さ分だけコンテンツが押し下げられるパターンです。事前に枠の高さをCSSで確保(プレースホルダー)しておけば、読み込まれてもレイアウトは動きません。

対処: 枠の高さを事前確保

.ad-slot {
  min-height: 280px;  /* 配信される広告の高さを確保 */
}

修正後の確認方法

よくある質問

CLSはPCとモバイルどちらで見るべきですか?

両方測定されますが、優先すべきはモバイルです。画面が小さいぶん、ずれの影響が相対的に大きく、モバイルファーストインデックスの評価対象でもあります。

関連記事

この問題が自分のサイトで起きているかは、URLを入力するだけで確認できます。 無料で診断するルール一覧料金プラン