CSSアニメーションジェネレーター
CSS @keyframesアニメーションを視覚的に構築 · プリセットを選ぶか、長さ、変換、イージング曲線をカスタマイズします。本番対応のコードをコピーします。
プリセット
設定
プレビュー
生成されたCSS
使い方
- アニメーションプリセットを選択: フェード、スライド、バウンス、回転、パルス、シェイクなどの一般的なアニメーションから選択します。
- 時間と動作をカスタマイズ: 期間、遅延、イージング関数、反復回数、フィルモードを調整します。
- CSSをコピー: 完全な@keyframes定義とアニメーションショートハンドプロパティが、スタイルシートに貼り付ける準備ができています。
なぜCSSアニメーションジェネレーターを使うのか?
CSSアニメーションは、インターフェースを生き生きとさせます, 重要な要素に注意を引き、視覚的フィードバックを提供し、洗練されたユーザー体験を作成します。@keyframesルールを手動で書くには、正しい構文、イージング曲線の名前、適切なプロパティの組み合わせを知る必要があります。このジェネレーターは、ライブプレビュー付きの精選されたアニメーションプリセットを提供し、各パラメータを微調整して、JavaScriptやアニメーションライブラリなしで本番対応のCSSを生成できるようにします。
機能
- アニメーションプリセット: フェード、スライド、バウンス、回転、パルス、シェイク、フリップ、ズームなど, すべてライブプレビュー付き。
- カスタムキーフレームエディタ: ビジュアルインターフェースで独自のアニメーションをゼロから構築します。
- タイミングコントロール: 期間(ms/s)、遅延、イージング(linear、ease、cubic-bezier)、反復回数を設定します。
- フィルモード: forwards、backwards、both、noneの動作を制御します。
- JavaScriptは不要: 生成されるすべてのアニメーションは純粋なCSSです, ライブラリやフレームワークなし。
よくある質問
CSSのアニメーションとトランジションの違いは?
CSSトランジションは状態の変化(ホバー、フォーカス、クラスの切り替え)で発生し、2つの状態間でアニメーションします。CSSアニメーションは@keyframesを使って複数の状態を定義し、ユーザーの操作とは独立して実行されます, ループ、反転、自動開始ができます。
animation-fill-modeとは何で、なぜ重要なのか?
animation-fill-modeは、要素がアニメーション開始前(backwards)、終了後(forwards)、または両方のスタイルを保持するかどうかを制御します。forwardsがないと、要素はアニメーション終了時に元のスタイルに突然戻ります。
CSSアニメーションはパフォーマンスが良いですか?
transformとopacityのみを使用するアニメーションはGPUアクセラレーションされ、非常にスムーズです。width、height、margin、top/leftなどのレイアウトプロパティをアニメーション化することは避けてください, レイアウトの再計算をトリガーし、ジャンクを引き起こす可能性があります。60 fpsを達成するためにtransformとopacityにとどまります。
CSSアニメーションが実際に行うこと
CSSアニメーションは、JavaScriptなしで、定義されたキーフレーム間で時間をかけて1つ以上のCSSプロパティを補間し、目に見える動きや変化を生み出します。モデルには2つの部分があります: @keyframesルールはパーセンテージベースのステップ (0%から100%) でアニメーションがどう見えるかを定義し、animationショートハンドプロパティ (またはそのロングハンド兄弟animation-duration、animation-delay、animation-timing-function、animation-iteration-count、animation-fill-mode) はそのキーフレーム定義の再生方法をブラウザに指示します。ブラウザはすべての補間、イージング、フレームタイミングをC++で処理し、通常transformとopacityの変更にはGPUアクセラレーションされます。
アニメーションはCSSトランジションと2つの点で異なります。トランジションは要素の状態が変わるとき (ホバー、クラスのトグル、フォーカスイベント) に発火し、ちょうど2つの値の間で補間します: 古い値と新しい値。アニメーションは状態に依存せず実行され、任意の数のキーフレームステップに従い、無限にループでき、逆方向に再生でき、CSSまたはJavaScriptを介してトリガー、一時停止、再開できます。トランジションは「AからBへ0.5秒でスナップ」の正しいツールです; アニメーションは「この注目を引くパルスを永遠にループ」または「要素が表示されたときにこのエントリシーケンスを1回再生」の正しいツールです。
現代のWebデザインにとって、CSSアニメーションはJavaScriptライブラリを必要としていた膨大な量のものを置き換えます。スピナー、フェードイン、スライドアップ、注目パルス、成功チェックマーク: すべて今や標準のCSSパターンです。トレードオフは複雑なシーケンスの表現力です。CSSアニメーションは多くのことができますが、5〜7のキーフレームステップと同期したプロパティ変更で便利でなくなります; ストーリーボード化されたアニメーション、スクロール連動シーケンス、またはJavaScriptの状態に依存する動的なものには、専用ライブラリ (GSAP、Framer Motion、Web Animations API) が依然としてより良い選択肢です。
このツールがフードの下でどう動作するか
プリセット (例えば「bounce」または「fade-in」) を選択すると、ツールは事前定義された@keyframes文字列をプレビューエリアにロードし、プレビューボックスにanimationプロパティを適用します。キーフレームは実際のCSSで、カスタムフォーマットではありません: 見ているものがコピーして得るものです。スライダーは、リアルタイムでインラインanimationプロパティを編集することでアニメーションのタイミング値 (duration、delay、iteration count) を更新するため、プレビューはページのリロードなしですべての変更を即座に反映します。
イージング関数の選択は、標準のCSS timing-function値を使用します: linear (定速度) 、ease (デフォルト、開始と終了が遅い) 、ease-in (開始が遅い) 、ease-out (終了が遅い) 、ease-in-out (開始と終了が遅い) 、またはカスタムカーブの場合cubic-bezier(x1, y1, x2, y2)。表示されるアニメーションカーブは、ブラウザのネイティブtiming-function実装によって計算されます; プレビューはJavaScriptシミュレーションではなく、実際のブラウザレンダリング出力です。
コードボックスは、スタイルシートに投入するために必要な完全なCSSを示します: @keyframesブロックと.your-class { animation: ... }宣言の両方。「Copy CSS」をクリックすると、両方が1つのテキストブロックとしてクリップボードに書き込まれます。ファイルは生成されず、サーバーは何も処理せず、ツールには呼び出すバックエンドがありません。プレビュー、コード生成、クリップボードへの書き込みはすべて、デバイス上のJavaScriptで行われます。ページを更新すると、最初にコピーしていない限り、カスタム構成は失われます。
Webアニメーションの簡単な歴史
- Flashがウェブモーションを支配、1996年から2010年。Adobe Flash (元々はMacromedia) は2000年代初頭を通じてWebアニメーションの主要なツールです。ベクターベース、タイムライン駆動、カスタムプラグインランタイム付き。2010年までに、Flashはほとんどのバナー広告、YouTubeビデオプレーヤー、Newgrounds時代のゲームに動力を供給しています。それからモバイルデバイスがそれを殺します: iPhoneはFlashをサポートしたことがなく、Androidは2012年にサポートを終了し、ブラウザは2020年までにプラグインを廃止します。
- WebKitのCSSトランジション、2007年。AppleのWebKitエンジンは2007年に
-webkit-transitionを出荷し、最初の一般的にデプロイされたCSSアニメーションプリミティブです。初期のiPhone Webアプリで多く使用されました。2009年までにプロパティはCSS仕様プロセスにあり、2014年までにブラウザ間でプレフィックスなしで出荷されます。 - CSS Animations Module Level 1、2009年。WebKitは2009年3月、W3C CSS Animations Module Level 1ドラフト (2009年も) に先立って
-webkit-animationと@-webkit-keyframesを追加します。Firefoxはバージョン5 (2011) 、IEはバージョン10 (2012) で続きます。「基本アニメーションにJavaScriptは不要」時代が始まります。 - GSAPとJSアニメーションライブラリ、2008年以降。jQueryの
.animate()メソッド (2006) がJSアニメーションライブラリ時代を開始します; GreenSock Animation Platform (GSAP、2008年にローンチ) は、複雑なシーケンスアニメーション、タイムラインスクラブ、パフォーマンスのゴールドスタンダードになります。Disney、Coca-Cola、Awwwards層のマーケティングサイトで使用されます。CSSアニメーションと共存し続けます: GSAPはシーケンス複雑さのため、CSSは宣言的シンプルさのため。 - Web Animations APIが標準化、2014年から2018年。W3C Web Animations仕様は、CSSアニメーションを公開し、プログラム的制御を追加するJavaScript APIを提供します:
element.animate(keyframes, options)。Chromeはバージョン36 (2014) 、Firefoxはバージョン75 (2020) 、Safariはバージョン13.1 (2020) で出荷されます。宣言的なCSSと完全なライブラリパワーのJavaScript間のギャップを埋めます。 - スクロール駆動アニメーションが上陸、2023年から2024年。CSS Scroll-driven Animationsモジュールが
animation-timelineを導入し、CSSアニメーションが時間の代わりに (または時間に加えて) スクロール位置にバインドできるようにします。Chrome 115 (2023年7月) が最初に出荷します; SafariとFirefoxは2024年と2025年を通じてサポートを追加します。純粋なCSSでのパララックス効果、スクロール進捗インジケータ、セクションリビールアニメーションを解除します。
実世界のワークフロー
- ローディングスピナーとスケルトン状態。回転するローダー (360度回転キーフレームを持つ
animation: spin 1s linear infinite) は、最も一般的なCSSアニメーションの使用です。スライドするシマー効果のあるスケルトンスクリーンはtranslateXまたはbackground-positionアニメーションを使用します。両方とも知覚されるパフォーマンスに不可欠です: コンテンツが読み込まれている間、アニメーションはユーザーに「壊れている」ではなく「作業中です」と伝えます。 - ホバーとフォーカスのマイクロインタラクション。ホバー時に微妙にパルスするボタン、フォーカス時に持ち上がるカード、クリック時に揺れるアイコン: これらのマイクロインタラクションは、押し付けがましくなくパーソナリティを追加します。「1回再生して留まる」動作には
animation-iteration-count: 1とanimation-fill-mode: forwardsのアニメーションを使用し、「ホバー状態にスナップ」パターンにはトランジションを使用します。 - 注目を引くCTA。プライマリのコール・トゥ・アクションボタンが遅く連続的なパルスまたは呼吸光るアニメーションを持つことで、攻撃的でなく目を引きます。穏やかな呼吸リズムのために、
transform: scale(1) to scale(1.05)をanimation-iteration-count: infiniteと3〜4秒の持続時間と組み合わせます。より速いパルスは避けてください; 狂気じみていて、ユーザーをすぐに不快にさせます。 - ページのエントリーとセクションのリビール。ページ読み込み時またはスクロールインビュー時のフェードインとスライドアップアニメーションは、洗練された到着を作成します。CSSは単純なケース (読み込み時に1回実行されるアニメーション) を処理します; スクロールトリガーエントリの場合、JavaScriptのIntersectionObserverが、要素がビューポートに入るときにアニメーションをトリガーするクラスを追加します。最新のスクロール駆動アニメーションは、純粋なCSSでこのパターンを置き換え始めています。
- 成功フィードバックとエラーシェイク。フォーム送信フィードバックはアニメーション手がかりを使用します: 成功した保存は、簡単なバウンスインアニメーションで緑色のチェックマークを表示し、エラーはフォームを短く揺らします (0.4秒間で-10pxと+10pxを交互する
translateXキーフレーム) 。これらの小さなタッチは、相互作用を反応的で意図的に感じさせます。 - マーケティングヒーローとストーリーテリングシーケンス。ランディングページとヒーローセクションは、設計されたシーケンスを通じて注意を集中させるために、段階的なエントリーアニメーション (ロゴがフェードイン、ヘッドラインがスライドアップ、CTAボタンがパルス) をよく使用します。3つの兄弟要素のアニメーション遅延 (
animation-delay: 0s, 0.3s, 0.6s) は、JavaScript オーケストレーションを必要とせずに、ずらされた効果を作成します。
よくある落とし穴とその意味
- レイアウトプロパティをアニメーションするとパフォーマンスが殺されます。
width、height、margin、padding、top、left、right、bottom、font-sizeのようなプロパティは、アニメーションの各フレームでレイアウト再計算をトリガーし、しばしばジャンクまたは60fps未満のパフォーマンスを引き起こします。leftの代わりにtransform: translateX()、width/heightの代わりにtransform: scale()、visibilityの代わりにopacityを使用します。TransformとopacityはGPU合成され、レイアウトをトリガーしません。 - prefers-reduced-motionを無視するとアクセシビリティが損なわれます。一部のユーザーは、Webアニメーションによってトリガーされる乗り物酔いや前庭障害を経験します。
prefers-reduced-motion: reduceメディアクエリは、OSレベルでユーザーがオプトアウトできるようにします。装飾アニメーションを@media (prefers-reduced-motion: no-preference) { ... }で囲むか、動きの低減を要求するユーザーに対してanimation-duration: 0.01msを設定します。重要なアニメーション (ローディングスピナー) は残せますが、装飾的なものは設定を尊重するべきです。 - will-changeの過度の使用はメモリを傷つけます。
will-changeプロパティは、ブラウザに事前に要素をGPUプロモートするヒントを与え、アニメーションをスムーズにできます。しかし、多くの要素にwill-changeを追加すると、かなりのGPUメモリを消費します。実際にアニメーションする要素にのみ適用し、理想的にはアニメーションが始まる直前にJavaScript経由で追加し、その後に削除します。ページ上のすべての要素にwill-change: transformを設定するのはアンチパターンです。 - animation-fill-modeの混乱。デフォルトでは、要素はアニメーションが終了した後、元のスタイルに戻ります。アニメーションの最終状態を保つには、
animation-fill-mode: forwardsを使用します。遅延が経過する前にアニメーションの最初の状態で要素を開始するには、backwardsを使用します。両方を行うには、bothを使用します。多くの「なぜ要素が元に戻るのか?」バグは、このプロパティを欠くことから来ます。デフォルト値はnoneで、これはワンショットエントリーアニメーションでめったに望むものではありません。 - 無限のアニメーションはモバイルバッテリーを消耗させます。
animation-iteration-count: infiniteアニメーションは永遠に実行され、GPUをアクティブに保ち、スクリーンリフレッシュレートを最大に保ちます。モバイルデバイスでは、これがバッテリーを著しく消耗させます。装飾的な連続アニメーション (穏やかに呼吸するロゴ) の場合、ページが非表示になっているときにアニメーションを一時停止する (document.visibilityState !== 'visible') 、または反復回数を無限ではなく3〜5のような有限の数に制限することを検討してください。 - スケールでのキーフレーム命名の衝突。@keyframesルール名はスタイルシート内でグローバルです: 1つのファイルの
@keyframes fadeは別のファイルの@keyframes fadeと衝突します。大きなコードベースの場合、サイレントオーバーライドを避けるために、キーフレーム名に名前空間を付けます (@keyframes app-fade-in、@keyframes hero-slide-up) 。CSS modulesとCSS-in-JSライブラリはスコープハッシュでこれを自動的に処理します。
プライバシー: すべてがあなたのブラウザで実行されます
CSSジェネレーターツールには2つのフレーバーがあります: クライアント側のJavaScriptを実行するシンプルなHTMLページ (プライベートで高速) と、プロジェクトを保存するクラウドエディタ (協力的だがプライバシーのトレードオフあり) 。このツールは最初のタイプです。スライダーの値、選択したプリセット、生成されたCSS: すべてブラウザセッションに残ります。ページを更新すると、最初にCSSをコピーしていない限り、状態は失われます。サーバーがアニメーションの選択を保存することはなく、テストしたプリセットを追跡する分析もなく、アカウントは必要ありません。
プライバシー特性は、主にプロプライエタリな設計作業にとって重要です。機密のクライアントプロジェクト用のアニメーションをプロトタイプするスタジオ、未発表のアプリのマイクロインタラクションに取り組む開発者、またはブランドキャンペーンを反復するデザイナー: 反復履歴または進行中の設計が作業に関する情報を漏らす可能性のあるすべてのコンテキスト。このツールでは、何も送信されないため、何もキャプチャされません。ブラウザのネットワークタブを開くと、使用中の送信リクエストはゼロです; 初期ページロードのみがHTMLとJavaScriptをフェッチします。
別のツールが正しい選択である場合
- 複雑なシーケンスアニメーションのためのGSAP。GreenSock Animation Platform (GSAP) は、同期、シーケンス、スクラブ可能なアニメーションを純粋なCSSよりもはるかにうまく処理します。ストーリーボード化されたマーケティングアニメーション、リバース機能を持つスクロール連動シーケンス、またはJavaScriptの状態変更に依存するあらゆるものには、GSAPが業界標準です。ほとんどのユースケースで無料 (一部のプラグインにはクラブライセンスあり) 。
- デザイナーが作成したアニメーションのためのLottie。Lottie (元々はAirbnbから) は、After EffectsアニメーションをJSONとしてレンダリングし、デザイナーがAfter Effectsで複雑なモーションを作成し、Web/iOS/Androidに直接エクスポートできるようにします。手書きキーフレームが実用的に生成できるものを超えるアニメーション (キャラクターアニメーション、複雑なモーフィング、イラストレーションシーケンス) には、Lottieのdesign-to-codeパイプラインが手動CSSアニメーションを上回ります。
- JavaScript制御のためのWeb Animations API。実行時にJavaScriptからアニメーションを開始、一時停止、リバース、変更する必要がある場合、Web Animations API (
element.animate(keyframes, options)) はCSSクラスを操作するよりもエルゴノミックです。.pause()、.play()、.reverse()、.finishedPromiseのようなメソッドを持つAnimationオブジェクトを返します。ネイティブブラウザサポート、ライブラリ不要。 - ゲームループのためのrequestAnimationFrame。連続的なJavaScriptロジックによって駆動されるアニメーション (ゲームループ、物理シミュレーション、リアルタイムデータ可視化) には、フレームごとに手動でプロパティを更新する
requestAnimationFrameが正しいアプローチです。CSSアニメーションは宣言的で事前定義されています; rAFは更新するものに対するフレームごとの制御を提供します。ピクセルレベルの制御も必要な場合はCanvasまたはWebGLを使用してください。
その他のよくある質問
アニメーションを1回だけ再生するにはどうすればよいですか?
animation-iteration-count: 1を設定します (指定されていない場合のデフォルト) 。完了後に要素がアニメーションの最終状態にとどまる (元のスタイルに戻らない) ようにするには、animation-fill-mode: forwardsも設定します。組み合わせたショートハンドはanimation: fadeIn 0.5s ease-out forwards;です。
アニメーションを一時停止して再開できますか?
はい、animation-play-state: paused (またはrunning) で。このプロパティをJavaScript経由 (例えばボタンクリック時) またはCSSで:hover経由で「ホバーで一時停止」パターンで切り替えます。アニメーションは現在の地点でフリーズし、runningに戻したときにそこから再開し、進捗を失いません。これはトランジションでも同じように機能しますが、ランタイム一時停止制御にはanimation-play-stateプロパティのみが存在します。
クリックまたはスクロール時にアニメーションをトリガーするにはどうすればよいですか?
クリックトリガーの場合、JavaScript経由でCSSクラスを切り替えます: element.classList.toggle('animate-in')。クラスが追加されるとアニメーションが実行されます。スクロールトリガーの場合、IntersectionObserverを使用して要素がビューポートに入るタイミングを検出し、その時点でクラスを追加します。現代のブラウザでは、CSS Scroll-driven Animationsが、JavaScriptなしでanimation-timeline: scroll()を介してアニメーションの進捗をスクロール位置に直接結びつけることを可能にします。
なぜアニメーションがちらついたりカクついたりするのですか?
ほとんどのちらつき/カクつき問題は、transform ベースの同等物の代わりにレイアウトトリガープロパティ (width、height、top/left) をアニメーションすることから来ます。left: 0をtransform: translateX(0)に切り替えると、アニメーションは滑らかになるはずです。その他の原因: 多くの半透明レイヤーからのオーバードロー、同じフレーム内でスタイルを読み書きするJavaScriptからのレイアウトスラッシング、またはアニメーション要素に過剰な影とフィルター。
アクセシビリティに重要なインターフェースでアニメーションを使用すべきですか?
使用してください、ただしprefers-reduced-motionを尊重してください。WCAG 2.1ガイドラインは、不要な動きを無効にするオプションを提供することを推奨しています。装飾アニメーションを@media (prefers-reduced-motion: no-preference)で囲み、OSの設定を行ったユーザーが静的な体験を得るようにします。重要なフィードバックアニメーション (ローディングインジケータ、エラーシェイク) は保持できます; 純粋に装飾的なものは敏感なユーザーに対してオプトインにすべきです。
カスタムイージングカーブにcubic-bezierを使用できますか?
はい。cubic-bezier(x1, y1, x2, y2)タイミング関数は、2つのコントロールポイントを使って任意のイージングカーブを定義できます。各x値は0と1の間です (時間を表す) 、y値は負の値または1より大きい値にすることができます (オーバーシュートとバウンス効果を可能にする) 。視覚的にカーブを選ぶには、当社のCubic BezierツールまたはLea Verouの古典的なcubic-bezier.comを使用してください。一般的なプリセット代替案: ease、ease-in、ease-out、ease-in-out、およびlinear-aliased CSS変数cubic-bezier(0.25, 0.1, 0.25, 1) (デフォルトのease) 。