CSSアニメーション生成ツール

次へ

@keyframesをゼロから書くのは手間がかかります:パーセントを選び、プロパティを推測し、再読み込みして、確認し、調整する。このジェネレーターは、6つの完成済みアニメーション(フェード、スライドアップ、バウンス、スピン、パルス、シェイク)を用意し、アニメーション名、再生時間、イージング、繰り返し回数、方向を設定できます。結果はリアルタイムで再生され、満足したら生成された@keyframesブロックとanimationの省略記法をコピーできます。

CSSアニメーションの作成方法

  1. 1

    プリセットを選ぶ

    6つの組み込みアニメーションから選択します:フェード、スライドアップ、バウンス、スピン、パルス、シェイク。

  2. 2

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

    キーフレームに有効なCSS識別子を付けます(例:`cardIn`や`fadeIn`)。同じ名前が`animation`の省略記法でも使われます。

  3. 3

    再生時間と繰り返しを設定する

    秒単位の再生時間、イージング(ease、ease-in、ease-out、ease-in-out、linear、spring)、繰り返し回数(1、2、3、infinite)、方向(normal、reverse、alternate、alternate-reverse)。

  4. 4

    CSSをコピーする

    生成された`@keyframes`ルールと`animation:`の省略記法を、スタイルシートにそのまま貼り付けられます。

アニメーションの構造

@keyframes slide-in {
  0%   { transform: translateX(-100%); opacity: 0; }
  60%  { transform: translateX(10%);   opacity: 1; }
  100% { transform: translateX(0);     opacity: 1; }
}

.card {
  animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

省略記法には8つのプロパティがあります:animation-name duration timing-function delay iteration-count direction fill-mode play-state

イージングの選択

このジェネレーターが提供するイージング関数は6つです:

イージング cubic-bezier() 動きの印象
linear n/a 一定速度
ease-in 0.42, 0, 1, 1 ゆっくり始まり、速く終わる
ease-out 0, 0, 0.58, 1 速く始まり、ゆっくり終わる
ease-in-out 0.42, 0, 0.58, 1 ゆっくり、速く、ゆっくり
ease(既定) 0.25, 0.1, 0.25, 1 やさしい既定の動き
spring 0.68, -0.55, 0.27, 1.55 行き過ぎて落ち着く

正しいプロパティをアニメーションさせる

ブラウザーはどんなプロパティでもアニメーションできますが、レイアウトやペイントを発生させずにGPU上で滑らかに動くのはわずかです:

軽い(コンポジットのみ)transformopacityfilter

重い(レイアウト/ペイント)widthheighttopleftmarginpaddingbackground-color

widthtopを毎秒60フレームで動かすのは小さな要素なら可能ですが、多数を同時に動かすとモバイルでカクつきます。複雑な動きには、topleftより常にtransform: translate(...)を、アニメーションする幅・高さよりtransform: scale(...)を優先してください。

will-change:控えめに使う

コンポジットレイヤーを事前に確保するようブラウザーに伝えると、滑らかさが向上することがあります:

.card { will-change: transform; }

ただしメモリーを消費します。アニメーションが始まる直前に設定し、終わったら解除してください。多くの要素にwill-change: transformを常時設定するのは、役立つ以上に害になることがあります。

動作を減らす設定

中には動きに敏感で、OSの設定を変更するユーザーもいます:

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

この設定を尊重してください。フォールバックとして、即時の状態変化かごく控えめなフェードを用意しましょう。

よくある質問

単純で宣言的な、一度きりの動きにはCSS。JavaScriptで駆動するタイミング、動的なキーフレーム、一時停止、再生制御にはWeb Animations API(element.animate())。どちらもコンポジター上で動作し、本質的な速度差はありません。

ほとんどの場合、transformではなくレイアウトを発生させるプロパティ(width、top、margin)を動かしているためです。translate()scale()に切り替えると、カクつきは通常消えます。

できます。animation: a 1s, b 1s 1s, c 1s 2s;のように遅延をずらすと3つのアニメーションを順番に実行できます。このジェネレーターは1つのアニメーションを出力するので、追加分は省略記法に自分で書き足してください。より複雑な動きにはWeb Animations APIやGSAPのようなライブラリーを使います。

アニメーション開始前(遅延中)に要素をfrom状態にし、終了後もto状態を保ちます。bothがないと、アニメーション終了時に要素は開始前のスタイルに戻ります。このジェネレーターは省略記法を最小限に保つので、必要ならフィルモードを自分で追記してください。

関連ツール