CSS Keyframes 生成

結果

@keyframes ルールはアニメーションの節目を定義します。要素が開始時・中間・終了時にどう見えるかです。このジェネレーターはよく使う4つの動き、フェードスライド、パルス、スピン、バウンスのルールを書きます。アニメーションに名前を付け、再生時間を設定し、スライドとバウンスでは移動距離をピクセルで指定します。出力は animation の省略記法と @keyframes ブロックで、スタイルシートに貼り付けるだけです。

Keyframes の生成手順

  1. 1

    アニメーションの種類を選ぶ

    フェードスライド、パルス、スピン、バウンス。各プリセットにフレームが用意されています。

  2. 2

    アニメーションに名前を付ける

    `fade-slide` のような kebab-case の名前を付け、あとで `animation` の省略記法で使います。

  3. 3

    再生時間を設定する

    秒単位で、素早いトランジションなら 0.6 など。

  4. 4

    距離を設定する(スライドとバウンス)

    垂直方向の移動に使うピクセル単位の距離。

  5. 5

    CSSをコピーする

    省略記法と `@keyframes` ブロックをスタイルシートへ。

4つのプリセット

フェードスライド

.animated {
  animation: fade-slide 0.6s ease both;
}

@keyframes fade-slide {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

要素が下からすべり上がりながらフェードインします。

パルス

@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.05); opacity: .8; }
}

やわらかな脈動で、通知ドットやバッジに向きます。

スピン

@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

1回転。ローダーやアイコンに便利です。

バウンス

@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-24px); }
}

要素が跳ね上がって戻ります。

なぜ transform と opacity なのか

ブラウザは transformopacity をレイアウト計算や再描画なしでGPU合成するため、アニメーションが滑らかに保たれます。プリセットはレイアウト計算を起こすプロパティを意図的に避けています。

animation の省略記法

animation: fade-slide 0.6s ease both; は「fade-slide という名前のアニメーション、0.6秒、デフォルトの ease イージング」という意味です。フィルモード both はアニメーション開始前に開始状態を適用し、終了後も終了状態を保つため、要素が開始前にチラついたり、動きのあと急に戻ったりしません。

命名のコツ

  • CSS の慣習に合わせ kebab-case にします。
  • 要素ではなく動きを表す名前を: alert-appear より fade-in-up が良いです。
  • サードパーティのライブラリと衝突しそうな名前は避けましょう。

ブラウザ対応

@keyframes は普遍的な機能で、IE 10 以降のすべてのブラウザで動作します。

よくある質問

カード、バナー、ダイアログなどページに入るコンテンツにはフェードスライド。目立たせたい注意ドット、バッジ、ボタンにはパルス。ローダーや進捗アイコンにはスピン。CTA矢印のような遊び心のある強調にはバウンスです。

距離はスライドとバウンスのプリセットでの垂直移動ピクセル数です。フェードスライドは24px下から始まり上へすべり、バウンスは24px上に跳ねて戻ります。スピンでは使いません。

できます。出力は純粋なCSSです。ease を別のイージングキーワードや cubic-bezier(...) 値に置き換え、@keyframes ブロック内に 25% や 75% などの途中のパーセントを足して動きを調整してください。

フレームワークの再レンダリングがクラスを再適用してアニメーションを再開させるためです。animation-fill-mode: both(出力にすでに含まれています)で終了状態を保つか、アニメーションのトリガーを再レンダリングされる要素から切り離してください。

関連ツール