loading
skeleton screen / shimmer
実コンテンツと同じ形の骨組みの上を光の帯がループで走り、「読み込み中で、もうすぐ出る」を伝える定番。スピナーと違いレイアウトを先に約束するため、体感待ち時間と読み込み後のガタつきを同時に減らせる。
02 — Prompt template
03 — Params
speed(シマーの周期 s) — 範囲 0.6〜3 / 初期 1.4
光が1回走る周期。1.2〜1.6sが目安。速いと焦らせ、2s超は止まって見える瞬間ができる。width(光の幅 %) — 範囲 10〜60 / 初期 30
ブロック幅に対するハイライトの割合。20〜35%が上品。広すぎると点滅に見える。
04 — Vocab
スケルトンスクリーン — 実コンテンツの骨組みを先に見せる読み込みUI。何がどこに出るかを予告するため、スピナーより体感待ち時間が短い。
シマー(shimmer) — 骨組みの上を走る光の帯。「処理が進行中」を伝えるのはこの動きで、これが無い静止スケルトンは故障と区別がつかない。
レイアウトシフト(CLS) — 読み込み後にレイアウトがずれる量。骨組みを実寸で作れば差し替え時のずれをゼロにできる。
background-position — 敷いたグラデーションをずらして光を動かす手軽な方式。要素数が多い画面では::after+translateXの方が描画負荷が軽い。
05 — NG → OK examples
NG
言い方: 「「ローディング中はそれっぽいプレースホルダを出しといて」」
なぜNG: 形も動きも未定義。実コンテンツと寸法の違う灰色の箱が並び、読み込み完了時に画面全体がガタッとずれる。光が走らない静止した箱は「壊れて止まっている」ようにも見える。
OK
言い方: 「「skeleton shimmerを実装。実UIと同寸の骨組みに105degのグラデーションをbackground-size 200%で敷き、background-positionのキーフレームで1.4s linear無限ループ、光の幅は30%、reduced-motion時は静止」」
なぜOK: 寸法一致・グラデーションの角度・周期・CSSのみで完結する実装方式まで指定している。「実UIと同寸」の一言がレイアウトシフトを防ぐ。
