CLSを改善 | # | コミット | プラクティス | CLSへの効果 | |---|----------|-------------|-------------| | 1 | 22162c7 | サムネイルスライダーの初期化依存CSSを解消 | 0.163 → 0.020 | | 2 | 24e661b | ファーストビュー画像50枚への明示的な寸法指定 | 効果なし | | 3 | 9d80f33 | カルーセル初期レイアウトのCSS固定 + スライダーCSSのhead移動(必須) | 0.020 → 0.000 | | 4 | 00f6a0b | ページ全体の残る寸法未指定画像への寸法指定(207枚) | 効果なし | | 項目 | 状態 | |------|------| | 画像のwidth/height属性 | 適用済み(CLSへの効果なし。unsized-images 154件→0件、score 0.5→1.0) | | 動的コンテンツ | 該当あり(フォールド外のため実測CLS寄与ゼロ、対処不要) | | Webフォント | 該当なし(@font-faceはswiper-iconsのdata URI 1件のみ、Webフォント読み込みなし) | | カルーセル/スライダー | 適用済み(主因。CLS全量が .thumbs-slider 1箇所に集約) | | ヘッダー/フッターの動的高さ変化 | 該当なし(setPaddingTopBodyはCSS値と一致、headerStickyはデッドコード) | | JSによるzoom変更 | 該当なし(実際にzoomを変更するコードなし) | | 【必須】カルーセル初期レイアウトのCSS固定 | 適用済み(JS無効時のレイアウト再現をPuppeteerで実測検証) | - CLS 0.163 の全量がサムネイルスライダー `.thumbs-slider` の1箇所に集約されていた - 原因は `swiper-container-initialized` 等のJS付与クラスに `padding: 10px 0` が依存していたことと、スライド幅がJSにしか決められていなかったこと - Lighthouse の layout-shifts 監査は根本原因を「Media element lacking an explicit size」と報告し続けたが、これは誤導だった(HTML属性による寸法指定を認識しないヒューリスティック) | 監査 | 開始時 | 完了時 | |------|--------|--------| | cumulative-layout-shift | 0.163(score 72) | 0.000(score 100) | | layout-shifts items | 1件 | 0件 | | unsized-images items | 154件 | 0件 | | unsized-images score | 0.5 | 1.0 | LCP: 894ms CLS: 0.000 TBT: 497ms FCP: 337ms SI: 1004ms Overall Score: 87