スケルトン
componentデータを読み込んでいる間、表示される予定の中身と同じ形・大きさの淡いグレーの面を置いておく仮の表示です。何がどこに出るかを先に伝え、読み込みが終わって中身に差し替えたときにレイアウトがずれないようにします。
形
土台の .skeleton に形のクラスを組み合わせる。幅・高さは w-* / h-* / aspect-* で実物に合わせる
文字の大きさに合わせる
skeleton-text に置き換え先と同じ typo-* を付けると、高さがその文字の行と同じになる(面の高さは文字の大きさ、上下の余白は行間)
typo-xlarge
事業の概要
typo-large
譲渡の希望条件
typo-medium
地域に根ざした洋菓子店です
typo-small
2026 年 10 月 16 日に更新
組み合わせの例
複数行の本文は skeleton-lines で包む(最後の行は自動で短くなる)。読み込み中の領域に aria-busy="true"、面は aria-hidden="true"
最近の問い合わせ
機能
このコンポーネントの用途
データを取得している間に、画面の骨組み(文字の行・画像・アバター)を先に見せて
「何がどこに出るか」を伝え、読み込み後にレイアウトがずれないようにする。
ボタンを押したあとの処理待ちは btn の data-loading、読み込みの失敗は alert / inline-message。
使用法
推奨される使い方と、やりがちな NG パターン
OK
- ✓読み込み後の中身と同じ形・大きさ・並びで置く(差し替えたときにレイアウトがずれない)。
- ✓文字の行は skeleton-text にし、置き換え先と同じ typo-* を付ける。複数行の本文は skeleton-lines で包む。
- ✓見出しやラベルなど、取得を待たずに出せる文言はそのまま出し、取得するデータの部分だけをスケルトンにする。
- ✓読み込み中の領域に aria-busy="true" を付け、スケルトン自体は aria-hidden="true" で読み上げから外す。 「読み込み中」であることは sr-only の文言で伝える。
NG
- ✕ボタンを押したあとの処理待ちに使わない → btn の data-loading(二重送信も防げる)。
- ✕読み込みに失敗したとき・結果が 0 件のときにスケルトンのまま残さない → 失敗は alert / inline-message、 0 件は空の状態の案内に差し替える。
- ✕中身と違う形(行数・大きさがまったく違うもの)を置かない → 差し替えたときに画面が大きく動く。
- ✕独自の点滅・光が流れるアニメーションを足さない → 既定のゆっくりした変化のまま使う(速い明滅は WCAG 2.3.1)。
出せる文言はそのまま出す
スケルトンにする範囲希望条件
読み込み中見出しは取得を待たずに出す。何を読み込んでいるかが分かり、データの部分だけが待ち状態になる。
固定の見出しまでスケルトンにすると、何を待っているのかが分からない。
スケルトンのアクセシビリティ
スケルトンは見た目だけの仮の表示です。面そのものは読み上げから外し、読み込み中であることは文言と aria-busy で伝えます。WCAG 2.2 全基準は アクセシビリティ ページを参照。
期待される配慮
Presentation / Adaptability / Interaction / Assistive Technology
点滅は 2 秒周期のゆっくりした不透明度の変化で、閃光にはならない。動きを減らす設定では止まる。
文字の行は文字の大きさ(em)と行の高さ(lh)で決まるため、文字を拡大しても中身と同じ比率で大きくなる。
操作できる要素ではない。フォーカスが当たらないよう、ボタンやリンクをスケルトンの中に置かない。
読み込み中の領域に aria-busy="true"、面に aria-hidden="true"、「読み込み中」は sr-only の文言で伝える。
DS が担保する機能
追加実装なしで満たされる
- ✓
prefers-reduced-motion: reduceで点滅を止める - ✓点滅は 2 秒周期(1 秒に 3 回の閃光の基準を超えない)
- ✓強制カラーモードでは面を
GrayTextで塗り、形が消えない
実装時の必須対応
プロダクト側で担保する
- !読み込み中の領域に
aria-busy="true"を付け、読み込みが終わったら外す - !スケルトンの面(またはそれを包む要素)に
aria-hidden="true" - !「読み込み中」を
<span class="sr-only">で文言として置く - !読み込みに失敗したらスケルトンを残さず、alert / inline-message でエラーを知らせる
テスト方法
スクリーンリーダー / OS 設定 / 自動チェック
- SR読み込み中は「読み込み中」だけが読まれ、空の面が 1 つずつ読まれない
- 設定OS の「視差効果を減らす」/「アニメーションを表示しない」を有効にすると点滅が止まる
- 設定Windows のハイコントラストで面の形が見える
- 自動axe / Lighthouse で
aria-hiddenの中にフォーカスできる要素が無いことを確認