Caroa UI

Skeleton

ローディング中のプレースホルダーコンポーネント。

インポート

import { Skeleton } from '@caroainc/ui-components'

個別サブパス(バンドルサイズを抑えたい場合):

import { Skeleton } from '@caroainc/ui-components/skeleton'

基本的な使い方

<Skeleton className="h-4 w-[200px]" />

カード風

<div className="flex items-center space-x-4">
  <Skeleton className="h-12 w-12 rounded-full" />
  <div className="space-y-2">
    <Skeleton className="h-4 w-[250px]" />
    <Skeleton className="h-4 w-[200px]" />
  </div>
</div>

テキストブロック

<div className="space-y-2">
  <Skeleton className="h-4 w-full" />
  <Skeleton className="h-4 w-full" />
  <Skeleton className="h-4 w-3/4" />
</div>

アクセシビリティ: 複数行スケルトンのグループ化

複数の Skeleton を並べてローディング状態を表す場合は、Skeleton 自体には role/aria-* を付与せず、それらをまとめる親要素role="status"aria-label(例: "読み込み中")を付けることを推奨します。個々の Skeleton に読み上げ用の役割を持たせると、スクリーンリーダーが要素数分「読み込み中」を連呼してしまうため、グループ単位で1回だけ伝えるのが適切です。

<div role="status" aria-label="読み込み中" className="space-y-2">
  <Skeleton className="h-4 w-full" />
  <Skeleton className="h-4 w-full" />
  <Skeleton className="h-4 w-3/4" />
</div>

コンテンツが読み込み完了したら、この role="status" のブロックごとアンマウントし、実際のコンテンツに差し替えてください(読み込み中の状態をスクリーンリーダーに正しく伝えるため、読み込み中であることを示す要素として一時的にのみ存在させる)。

Props

PropTypeDefaultDescription
classNamestring-サイズや形状を指定するCSSクラス

On this page