CSSローダー/スピナー・ジェネレーター

ローディングアニメーションを選択し、色と速度をカスタマイズして、純粋なCSSコードをコピーします。

スタイルを選択

プレビュー

CSS + HTMLコード

使い方

  1. 上のギャラリーからローダースタイルを選択します。
  2. 色、サイズ、速度、太さをカスタマイズします。
  3. 生成されたCSS + HTMLをコピーして、プロジェクトに貼り付けます。

よくある質問

これらのローダーはJavaScriptを使用していますか?

いいえ!すべてのアニメーションは@keyframesを使った純粋なCSSです。JavaScriptなしで動作します。

これらのローダーはアクセシブルですか?

はい、ローダー要素にrole="status"とaria-labelを追加すれば。アニメーションを少なくしたいユーザーは、prefers-reduced-motionメディアクエリで考慮できます。

使い方

  1. ローダースタイルを選択: スピナー、ドット、バー、リング、パルス、スケルトンから選択します。
  2. 外観をカスタマイズ: スライダーで色、サイズ、アニメーション速度、太さを調整します。
  3. アニメーションをプレビュー: ローダーがプレビューエリアでライブにアニメーションし、正確にどう見えるかを確認できます。
  4. HTMLとCSSをコピー: 最小限のHTMLマークアップと必要なCSSを取得, JavaScriptの依存関係なし。

なぜCSSローダージェネレーターを使うのか?

ローディングインジケーターは、進行中のアクティビティを示し、非同期操作中にページがフリーズしているとユーザーに思わせないための必須のUX要素です。純粋なCSSローダー, CSSアニメーションのみで、JavaScriptや画像なし, は軽量で信頼性が高く、GPUアクセラレーションされた変換のおかげで60 fpsでレンダリングされます。このジェネレーターは、プロジェクトに直接統合できる本番対応のスピナーコードを生成します。すべてのアニメーションは、リフローを引き起こすことなくアニメーションする2つのCSSプロパティ, transformとopacity, で@keyframesを使用しており、控えめなデバイスでも60 fpsでスムーズなレンダリングを保証します。

利用可能なローダータイプ

あなたのスピナーを動かす CSS アニメーションの簡潔な歴史

このジェネレーターが出力する @keyframes ルールと animation ショートハンドは CSS Animations Module Level 1 で定義されています。最初の W3C ワーキングドラフトは 2009 年 3 月 20 日 に公開され、仕様は最終的に9年後の 2018 年 12 月 11 日に W3C 勧告 に到達しました。その頃には、すべての出荷されたブラウザが何年もの間その構文をサポートしていました:Safari 4(2009 年 6 月) -webkit- プレフィックス付き、Firefox 5(2011 年 6 月)Internet Explorer 10(2012 年 10 月)、そして 2015 年 4 月に Chrome 43 によってプレフィックスなし。CSS Animations Module Level 2 は現在のワーキングドラフトで、animation-timeline を通じて スクロール駆動 アニメーションを追加します(Chrome 115、2023 年 7 月に出荷;Safari と Firefox は 2024 年後半に続きました)。「spinner」プリセットの回転は CSS Transforms Module Level 1 から来ます。これは別の仕様で、2019 年 2 月から Candidate Recommendation 状態ですが、普遍的に出荷されています:@keyframes ブロック内の 100% での transform: rotate(360deg) がリングを回転させます。

アクセシビリティはオプションではない:「動きを減らす」設定

2014 年以降にリリースされたすべてのオペレーティングシステムには「動きを減らす」アクセシビリティ設定が含まれています:macOS「視差効果を減らす」(アクセシビリティ → ディスプレイ内)、iOS「視差効果を減らす」、Windows「アニメーションを表示する」、Android「アニメーションを削除する」、GNOME「アニメーションを有効にする」をオフ。prefers-reduced-motion メディアクエリ(Media Queries Level 5、2017 年 11 月の W3C 初の公開ワーキングドラフトで定義)を使用すると、CSS がこの設定を検出してスピナーを停止できます。常にスピナーを次でラップしてください:

@media (prefers-reduced-motion: reduce) {
  .spinner { animation: none; }
}

WCAG 2.1 達成基準 2.3.3「インタラクションからのアニメーション」(レベル AAA、W3C 勧告 2018 年 6 月 5 日) は、インタラクションによってトリガーされるすべての動きアニメーションが、動きが必須でない限り無効化できることを要求します。スピナーが必須であることはまれです。WCAG 2.2(2023 年 10 月)は同じ規則を継承します。

スクリーンリーダーの場合、スピナーを <div role="status" aria-live="polite"> でラップし、視覚的に隠された「読み込み中…」テキストを含めます。読み込みが完了したら、内容を置き換えます;ライブリージョンは支援技術に「読み込み完了」を叫ぶことなく通知します。読み込み中はコンテナリージョンに aria-busy="true" を、後に aria-busy="false" を設定します。このパターンは W3C ARIA Authoring Practices Guide のライブリージョンの章に文書化されています。

なぜ CSS スピナーは 60 fps で滑らかなままなのか

最新のブラウザのレンダリングパイプラインには3つのステージがあります:レイアウト(位置の計算)、ペイント(ピクセルの塗りつぶし)、コンポジット(GPU 上でのレイヤーの結合)。transformopacity プロパティは、レイアウト ペイントの両方をスキップし、純粋にコンポジタースレッドで実行される唯一の2つのプロパティです。それらをアニメーションすることは、どのフレームレートでも本質的に無料です。widthheighttopleftmargin、またはボックスモデルを変更するすべてをアニメーションすると、フレームごとに完全なレイアウトとペイントパスが強制され、低スペックデバイスで急速に 60 fps を下回ります。このジェネレーター内のすべてのプリセットは、この理由から のみ transformopacity をアニメーションします。ブラウザにヒントを与える必要がある場合、will-change: transform(CSS Will Change Module Level 1、W3C Candidate Recommendation 2022 年 4 月 26 日で定義)は要素を独自のコンポジターレイヤーに昇格させます;各レイヤーは GPU メモリを消費するので、控えめに使用してください。

スピナーが正しい答えである時、そしてそうでない時

Response Times: The 3 Important Limits(1993、2014 年に再述)で、Nielsen Norman Group の Jakob Nielsen は 3 つの知覚閾値を定義しました:0.1 秒は「瞬時」1 秒は中断されない思考の流れの限界10 秒はユーザーの注意を維持する限界。ローダー戦略をこれらにマッピングしてください:

イージング関数とそれぞれがどう感じるか

animation-timing-function プロパティ(および CSS Easing Functions Module Level 1、Candidate Recommendation 2022 年 12 月 6 日)は、キーフレーム間で値がどのように進行するかを選択します:

よくある間違い

その他のよくある質問

これらのスピナーは古いブラウザで動作しますか?

すべてのモダンブラウザ(Chrome 43+、Firefox 16+、Safari 9+、Edge 12+)は、プレフィックスなしで @keyframestransform をサポートします。Internet Explorer 10 と 11 は一部の場所で -ms- プレフィックスを必要としますが、それ以外は動作します。IE 9 以下 には CSS アニメーションのサポートがありません:アニメーション GIF にフォールバックするか、機能検出に @supports (animation: spin 1s) を使用してください。

コンテンツが読み込まれたときにスピナーを停止するにはどうすればよいですか?

DOM から要素を削除するか、display: none または hidden 属性で非表示にするか、animation-play-state: paused でアニメーションを一時停止します。再度表示する可能性がある場合は、一時停止が最も安価です。ARIA パターンを使用した場合は、コンテナに aria-busy="false" も設定し、ロード中のテキストをロード完了状態のアナウンスに置き換えます。

ピッカーで許可されている以上にスピナーの色をカスタマイズできますか?

はい。出力 CSS は通常の hex / rgb / hsl 値を使用します;それらを CSS 変数(var(--brand-primary))に置き換えて、スピナーがデザインシステムに従うようにします。デュアルカラースピナーの場合、border-color ショートハンドを編集します:border-color: var(--brand) transparent transparent transparent はクラシックな「4 分の 1 弧」の外観を与えます。

なぜ SVG または Lottie アニメーションを使わないのですか?

CSS スピナーは 200 バイト未満で、追加のリクエストも JavaScript ランタイムも必要なく、外部リソースがロードされる前にレンダリングされます。SVG は複雑な形状に適しています;Lottie は After Effects からのデザイナー作成アニメーションに適しています。一般的な「何かが読み込まれている」インジケーターの場合、CSS は仕事を正しく行う最も安価なツールです。

何かが追跡されたりサーバーに送信されたりしますか?

いいえ。ジェネレーターは完全にブラウザの JavaScript で実行されます。色の選択、サイズの調整、コピーされた CSS はページを離れることはありません。DevTools のネットワークタブで確認してください。

関連ツール