コンテンツにスキップ

スケルトン

hc-skeleton は、読み込み中のコンテンツの代わりに描画するプレース ホルダーです。任意の要素に .hc-skeleton を適用してサイズを与えて ください — 面の色、角丸、アニメーションはコンポーネントが供給します。 JavaScript のない純 CSS です: スケルトンから本物のマークアップへの 差し替え(htmx スワップ、フレームワークの再描画など)は自分で行い ます。

面はテーマ適応のミュート背景を使うため、追加の作業なしにライトと ダークの両モードで正しく見えます。

別名: ローディングプレースホルダー、シマー。

ブロックのサイズは利用側で決めます — インライン style、 ユーティリティクラス、または包んでいるレイアウトで。スケルトンに 固有のサイズはありません。

data-shaperect(デフォルト)、textcircle を受け付け ます。

  • rect — medium の角丸を持つ汎用ブロック。カード、画像、サムネ イルに(サイズは自分で)。
  • text — 1 行のテキスト: 高さ 1em、より締まった角丸。幅を 減らしながら複数積むと段落を模せます。
  • circleaspect-ratio: 1 の完全な丸。片方の寸法(例: inline-size)を設定すれば正方形を保ちます — アバター / アイコンの スロットに。

data-animationpulse(デフォルト)、wavenone を受け付け ます。

  • pulse — ブロック全体がフェードイン / アウトします。
  • wave — 明るいハイライトの帯がブロックを横切ります。ハイライトは color-mix() でベース色から導かれるため、アクティブなテーマに 自動追従します。
  • none — 静的なブロック。OS の設定にかかわらず動きはオフです — スケルトンだらけのページで便利です。

pulsewaveprefers-reduced-motion: reduce の下では静的な ブロックに畳まれ、動きに敏感なユーザーには平坦なプレースホルダーが 見えます。

スケルトンはただのマークアップです。初期レスポンスで描画し、本物の フラグメントが届いたら htmx に置き換えさせます:

<div
data-hx-get="/dashboard/stats"
data-hx-trigger="load"
data-hx-swap="outerHTML"
role="status"
aria-busy="true"
aria-label="Loading statistics">
<div class="hc-skeleton" data-shape="text" style="inline-size:40%"></div>
<div class="hc-skeleton" style="block-size:6rem;margin-block-start:.5rem"></div>
</div>

サーバは(aria-busy なしの)完成した <div> を返し、スワップが スケルトンを読み込み状態ごと取り除きます。

  • スケルトンは装飾です。ブロックごとに注釈しないでください。 代わりに読み込み領域に role="status"aria-busy="true"、 アクセシブルな名前(aria-label="Loading…"、またはユーティリティが あれば視覚的に隠したテキスト)を付けます。スクリーンリーダーは 読み込み状態を、プレースホルダーごとではなく一度だけ読み上げます。
  • 本物のコンテンツが届いたら aria-busy を外す(または領域ごと スワップする)ことで、支援技術に読み込み完了を知らせてください。
  • 両方のアニメーションが prefers-reduced-motion: reduce を尊重 します。

component トークン(component.tokens.json):

トークンパス用途
skeleton.bgベースの面 — var(--hc-color-muted-bg)、ライト / ダークに適応。
skeleton.highlightwave の掃引色。color-mix()bg から導出。
skeleton.radiusrect 形状の角丸。
skeleton.text-radiustext 形状の角丸。
skeleton.text-heighttext 形状の行の高さ(1em)。
skeleton.pulse-durationpulse の周期。
skeleton.wave-durationwave の掃引時間。
生成される CSS 変数を表示
--hc-skeleton-bg | -highlight
--hc-skeleton-radius | -text-radius | -text-height
--hc-skeleton-pulse-duration | -wave-duration
  • スピナー — 模すべき コンテンツの形がないときの不確定なインラインインジケーター。
  • プログレス — タスクの進み具合が分かっているとき。