Skip to content

Spinner ​

処理が進行中であることを示します。

いつ使うか ​

待たせている最中に使います。 読み込み、送信、検索の実行中が該当します。

何がどれくらい進んだかを伝えたい場合には向きません。 進捗の割合がわかるなら、その数値を示してください。

例 ​

基本 ​

svg と circle は利用側が書きます。 アニメーションはコンポーネントが与えます。

html
<div class="jumpu-spinner" role="status" aria-label="読み込み中">
  <svg viewBox="25 25 50 50">
    <circle cx="50" cy="50" r="20"></circle>
  </svg>
</div>

読み込み中のカードとして組み立てた例は Recipes にあります。

ユーティリティによる調整 ​

調整したいこと書き方備考
大きさw-4 h-4 など既定は w-12 h-12 相当
色text-primary-500 など線は currentcolor を使います
html
<div class="jumpu-spinner h-4 w-4">
  <svg viewBox="25 25 50 50"><circle cx="50" cy="50" r="20"></circle></svg>
</div>
<div class="jumpu-spinner text-primary-500 h-8 w-8">
  <svg viewBox="25 25 50 50"><circle cx="50" cy="50" r="20"></circle></svg>
</div>
<div class="jumpu-spinner h-12 w-12 text-red-400">
  <svg viewBox="25 25 50 50"><circle cx="50" cy="50" r="20"></circle></svg>
</div>

マークアップ規約 ​

位置要素 / 属性要否効果
ルート任意の要素必須
ルートclass="jumpu-spinner"必須
ルート直下svg + viewBox="25 25 50 50"必須2 秒で 1 回転します
svg 直下circle + cx="50" cy="50" r="20"必須1.5 秒周期で線の長さが変わります

viewBox と circle の値は、アニメーションの stroke-dasharray と対応しています。 別の値にすると線の長さが合わなくなります。

状態 ​

常に回転しています。 止める指定はありません。

NOTE

prefers-reduced-motion に対応していません。 動きを減らす設定にしている利用者にも回転が再生されます。

アクセシビリティ ​

対応する APG のパターンはありません。

そのままでは支援技術に何も伝わりません。 role="status" と aria-label を与えて、待たせていることを伝えてください。

回転そのものは装飾です。 処理が終わったら、結果を伝える要素に置き換えてください。