Cubic Bezier ジェネレーター

CSS cubic-bezier() イージング曲線をビジュアル編集。ハンドルをドラッグして調整、リアルタイムでアニメーションをプレビューし、CSS / SCSS / Tailwind コードを出力。ブラウザで動作。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
12種類から選べます。Material 2とMaterial 3はそれぞれ別の曲線です。選ぶと制御点の4つの値を置き換えます。
Xは0〜1、Yは−2〜2に制限され、Yで逆方向の動きや行き過ぎを作れます。数値欄とコピーは小数第2位まで表示し、プリセットとドラッグの内部値はそれ以上の精度を保持できます。
Xは0〜1、Yは−2〜2に制限され、Yで逆方向の動きや行き過ぎを作れます。数値欄とコピーは小数第2位まで表示し、プリセットとドラッグの内部値はそれ以上の精度を保持できます。
時間は100〜10,000ミリ秒です。再生は最初から始まり、一時停止で止まります。ループで繰り返します。時間とループは生成されるタイミング関数のコードには含まれません。
ミリ秒
リセットはease-in-out(0.42, 0, 0.58, 1)、1500ミリ秒、CSS出力に戻し、再生を止め、端末に保存した設定を消します。ツール内にフォーカスがある場合はCtrl/⌘+Lも同じ操作です。ループは変わりません。
CSSのタイミング関数宣言、SCSS変数、Tailwind設定から選び、表示中の出力をコピーします。制御点はどの形式も同じです。
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
塗りつぶした円をドラッグして曲線を編集します。対角線はlinearです。正方形の上下にある制御点へは、プレビューをスクロールして移動できます。

塗りつぶしの 2 つの円をドラッグ。値はリアルタイムで更新。

詳しいガイドを読む Cubic Bezier ジェネレーター: CSS イージング曲線を勘で書くのをやめよう
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

カスタム cubic-bezier が必要な場面

linear / ease / ease-in / ease-out / ease-in-out の 5 つで十分なケースも多いですが、次のようなときはカスタム曲線が必要です:

  • デザインシステムにモーション言語が定義されている — Material Design 2 の標準曲線 (0.4, 0, 0.2, 1)、Material 3 の (0.2, 0, 0, 1)、Tailwind の ease-in-out。
  • overshoot や anticipation が欲しい — モーダルのポップイン、ドロワーのドラッグ、ボタン押下時のフィードバック。
  • Figma や After Effects のタイミング曲線を本番ビルドと完全一致させたい。

曲線の読み方

X 軸は正規化された時間(開始 0、終了 1)。Y 軸はアニメーションの進捗。対角線そのままなら linear。対角線より下にたわむ曲線はゆっくり始まり終盤で追いつきます(ease-in 寄り)。上に膨らむ曲線は出だしが速く、だんだん遅くなります(ease-out 寄り)。下から上へ S 字を描けば ease-in-out です。0 を下回ったり 1 を超えたりすると「バネ」効果が生まれ、装飾的な UI には合いますが機能フローには邪魔になることもあります。

イージング使い分け早見表

用途推奨カーブ理由
ページ・セクション入場cubic-bezier(0, 0, 0.2, 1)(decelerate)立ち上がり速く、終わりは柔らかく着地。最終状態を視認しやすい。
ページ・セクション退場cubic-bezier(0.4, 0, 1, 1)(accelerate)ゆっくり始まり素早く抜ける。次の画面がキビキビ感じる。
汎用トランジションcubic-bezier(0.4, 0, 0.2, 1)(Material 2 標準)すばやく加速し、ゆっくり減速。hover、focus、小さな移動に向きます。
遊び心のあるポップcubic-bezier(0.68, -0.55, 0.265, 1.55)(back ease)anticipation と overshoot を両立。バッジやトースト、注目喚起向き。
ドラッグ追従cubic-bezier(0.25, 0.46, 0.45, 0.94)滑らかな減速で物理的な慣性を再現。

プリセットの出典

各プリセットボタンは下表の 4 つの数値を読み込みます。同じ名前でも曲線が違うことがあるため、ラベルには体系とバージョンを書いています。Material 3 は Material 2 の標準曲線を置き換え、Apple の「既定」も 1 つではありません。

プリセット値出典
Ease・Ease-In・Ease-Out・Ease-In-Out(0.25, 0.1, 0.25, 1)、(0.42, 0, 1, 1)、(0, 0, 0.58, 1)、(0.42, 0, 0.58, 1)CSS のキーワード、CSS Easing Functions Level 1 §2.2
Material 2 標準 / 減速 / 加速(0.4, 0, 0.2, 1)、(0, 0, 0.2, 1)、(0.4, 0, 1, 1)Material Design 2, Speed
Material 3 標準(0.2, 0, 0, 1)Material 3 easing tokens(md.sys.motion.easing.standard)
Core Animation 既定(0.25, 0.1, 0.25, 1)CAMediaTimingFunctionName.default。CSS の ease と同じ曲線です。UIKit のビューアニメーションの既定は ease-in-ease-out です。
Tailwind In-Out(0.4, 0, 0.2, 1)Tailwind CSS transition-timing-function(ease-in-out)
Back(オーバーシュート)(0.68, -0.55, 0.265, 1.55)よく使われるオーバーシュート曲線。y が 0 未満と 1 超になるため、いったん戻ってから終点を行き過ぎます。

時間は逆行しないので、2 つの制御点の x は 0〜1 の範囲に収める必要があり、エディターが自動で制限します。y はこの範囲を超えてもよく、Back プリセットのオーバーシュートはそれで生まれます。

プライバシー

エディタはブラウザ内で動作します。曲線評価、アニメーションプレビュー、コピー操作はすべて端末上で実行され、制御点の値・時間・生成された CSS はサーバーへ送信されません。

関連ツール

FAQ

cubic-bezier イージング関数とは?

CSS の cubic-bezier(x1, y1, x2, y2) は、経過時間 (0〜1) をアニメーション進捗 (0〜1) にマッピングする曲線を 4 つの数値で定義します。曲線の両端は (0, 0) と (1, 1) に固定され、調整できるのは中間の 2 つの制御点 P1 と P2 のみ。P1.x と P2.x は必ず [0, 1] の範囲内、P1.y と P2.y は 0-1 を超えても構いません(overshoot や anticipation の表現)。

ease / ease-in / ease-out キーワードと何が違う?

CSS のキーワードは cubic-bezier プリセットの別名です。ease は cubic-bezier(0.25, 0.1, 0.25, 1)、ease-in-out は cubic-bezier(0.42, 0, 0.58, 1)。形状は 4 種類だけ。カスタム曲線にすれば、デザインシステムの標準(Material / iOS / Tailwind)に合わせる、特定のトランジションだけ手触りを微調整する、CSS / SCSS / Tailwind 設定で同じ数値を再利用する、といったことが可能になります。

なぜ P1.y / P2.y は 0-1 を超えてよい?

Y がマイナスだと anticipation(先に逆方向へ引いてから動き出す)、1 を超えると overshoot(行き過ぎてから戻る)になります。代表例の cubic-bezier(0.68, -0.55, 0.265, 1.55) は両方を使った back-out 曲線です。X 軸は時間なので、CSS の有効なタイミング関数として動かすには [0, 1] の範囲を保つ必要があります。

Tailwind CSS でどう使う?

tailwind.config.js の theme.extend.transitionTimingFunction にエントリを追加します。例:smooth-out: 'cubic-bezier(0.4, 0, 0.2, 1)'。これで ease-smooth-out というユーティリティクラスが使えるようになります。本ツールの Tailwind 出力モードはこのスニペットをそのまま生成してくれます。

設定は保存される?

制御点の位置、プレビュー時間、出力フォーマットは ZeroTool 共通の永続化レイヤーで端末の localStorage に保存されます。サーバー送信は一切ありません。ページ上の Clear ボタンで ease-in-out のデフォルトに戻せます。