FIRST CH TOOLS / デザイン / 51 CUBIC-BEZIER EASING PREVIEW
イージング(cubic-bezier)プレビュー&比較
CSSアニメーションの速度曲線を、つまみをドラッグしながら決めるツールです。2つのイージングを並べて同時に走らせるので、「どちらが気持ちいいか」をその場で見くらべられます。ease-out-expo などの定番プリセット、linear() 関数への近似出力つき。
曲線を決めます
横軸=時間(0→1)、縦軸=進み(0→1)。丸いつまみをドラッグするか、つまみを選んでから矢印キーで動かせます(Shiftで10倍)。編集するのは選んでいるほうの曲線(いまは 曲線A)です。薄く塗った帯は 0〜1 の外側=行き過ぎの領域です。
他サイトの実測値(DevToolsでコピーした cubic-bezier(…))をそのまま貼り付けられます。ease-out のようなキーワードや、プリセット名(ease-out-expo など)も読み取ります。
帯の下に並ぶ細い線は等間隔の時間ごとの位置です。線が詰まっているところは遅く、離れているところは速く動いています。帯の中の縦線は進み 0 と 1 の位置で、行き過ぎ(back系)はこの線を追い越してから戻ります。
OSの「視差効果を減らす/アニメーションを減らす」設定が入っているため、自動では走らせていません。「再生」を押したときだけ動きます。
linear() は折れ線なので、cubic-bezier では書けない動き(バウンド・弾み・多段の加速)も表せます。ここでは選んでいる曲線をそのまま折れ線に置き換えた結果を出しています。
動かす色は Colorコード変換&アルファ透過計算機、背景のグラデーションは CSSグラデーションジェネレーター、画面幅に応じて変わるサイズは CSS clamp() 計算機で作れます。
選ぶと編集中の曲線に入ります
クリックするといま選んでいるほう(AまたはB)に読み込み、「くらべる」タブへ戻って再生します。数値は easings.net と同じ定番値です。
読み方と、踏みやすい落とし穴
縦軸は「位置」ではなく「進み」
グラフの縦軸はアニメーションがどこまで進んだか(0=開始の値・1=終了の値)です。移動でも拡大でも色でも、同じ曲線が使えるのはこのためです。曲線の傾き=そのときの速さなので、立ち上がりが急なら「最初が速い」、終わりが寝ていれば「ゆっくり止まる」動きになります。
1つ目と3つ目は0〜1しか書けない
cubic-bezier(x1, y1, x2, y2) の x1・x2 は時間軸なので、CSSは 0〜1 の外を受け付けません。範囲外を書くとその宣言はまるごと無効として捨てられ、既定の ease で動いてしまいます。一方で y1・y2 は範囲の制限が無く、1を超えたり負になったりできます——これが「行き過ぎて戻る」動きの正体です。
行き過ぎが効くプロパティ・効かないプロパティ
進みが1を超える曲線(ease-out-back など)は、transform や位置ではふわっと行き過ぎて戻る心地よい動きになります。ところが opacity・色・width: 100% のように値の上限が決まっているプロパティでは、はみ出した分が頭打ちになり、終わりだけ間延びして見えます。透明度に back を当てても得をしないのはこのためです。
入りは速く、止まりはゆっくり(ease-out系)
画面に入ってくる要素・押した直後の反応は、最初が速くて最後にゆっくり止まる ease-out 系が定石です。押した瞬間に動き出すので反応がよく感じられます。逆に出ていく要素は、見届ける必要が無いので ease-in 系で素早く消すと待たされません。両方向に動くもの(開閉するパネル等)は ease-in-out 系にそろえます。
曲線より先に、時間を疑う
「なんとなく遅い」の原因は曲線ではなく時間の長さであることがほとんどです。小さな要素の状態変化は 150〜250ms、パネルの開閉は 250〜400ms、画面いっぱいの遷移でも 500ms 程度が目安で、移動距離が長いほど少し長くします。このページの「時間」スライダーを動かすと、同じ曲線でも印象が大きく変わることが確かめられます。
expo系は「速い」ではなく「飛ぶ」
ease-out-expo のような強い曲線は、いちばん速い瞬間が平均の何倍にもなります(上の「いちばん速い瞬間」で確かめられます)。短い時間と組み合わせると、目には動いたのではなく瞬間移動したように映ります。強い曲線を使うときは時間を少し長めに取るのが安全です。
cubic-bezier で書けないもの= linear() の出番
3次ベジェは山ひとつ・谷ひとつまでしか表せないので、何度も弾むバウンドや、途中で一度止まってまた動く動きは書けません。CSSの linear() は点をつないだ折れ線で緩急を指定するので、そうした動きも1行で書けます。このページの linear() 出力は、選んでいる曲線を縦方向の誤差が指定値以下になるまで点を間引いた折れ線に置き換えたものです(誤差と点数は上の集計に出ます)。linear() は Chrome 113・Safari 17.2・Firefox 112 以降なので、その上の行に cubic-bezier() を残してフォールバックにしてください。
steps() と併記されがちな話
同じ timing-function の仲間に steps(n) があります。こちらはなめらかにせず段階的に飛ばす指定で、スプライトアニメーションや秒針の表現に使います。ベジェとは併用できない(どちらか一方)ので、段階的に見せたいときは曲線側をいじらず steps() に切り替えます。
動きを減らす設定を必ず尊重する
OSに「視差効果を減らす」「アニメーションを減らす」設定を入れている人がいます。装飾のアニメーションは @media (prefers-reduced-motion: reduce) の中で止める(transition: none や animation: none)のが原則で、これはWCAG 2.2 の達成基準 2.3.3(インタラクションによるアニメーション)にも関わります。このページ自体も同じ設定を見ていて、その場合はプレビューを自動再生しません。
動かしてよいのは transform と opacity
どんなに良い曲線でも、width・top・margin のようなレイアウトをやり直させるプロパティを動かすとカクつきます。位置は translate、大きさは scale、表示・非表示は opacity に置き換えると、レイアウトと描画をやり直さずに済みます。
How to Use
- 曲線を決めるグラフのつまみをドラッグするか、「プリセット」タブから ease-out-expo などを選びます。他サイトから取ってきた cubic-bezier(…) は貼り付け欄からそのまま読み込めます。
- 並べて見くらべる「曲線B」に別のイージングを入れると、2本が同時に走ります。時間スライダーと「動かすもの」を変えて、実際に使う条件で確かめます。
- コピーして貼る「値をコピー」で cubic-bezier(…) だけ、「宣言をコピー」でカスタムプロパティ込みのCSSを取れます。linear() 近似も同じ欄からコピーできます。
About This Tool
イージングは「時間に対する進みぐあい」です。CSSの cubic-bezier(x1, y1, x2, y2) は、(0,0) から (1,1) へ向かう3次ベジェ曲線を2つの制御点で曲げたもので、横軸が時間・縦軸が進みを表します。このツールはその制御点をGUIで動かし、曲線の形・実際の動き・CSSの3つを同時に見られるようにしたものです。進み率の計算は、ブラウザ(WebKit の UnitBezier)と同じ手順——ニュートン法で時間を逆算し、収束しない区間だけ二分法に落とす——で行っているので、画面の動きと出力したCSSの動きが一致します。
2本を並べて走らせるのが主目的です。イージングは単体で見ても良し悪しが分かりません。AとBに別々の曲線を入れると、同じ時間・同じ距離で同時に走るので差がはっきり出ます。帯の下に並ぶ細い線は等間隔の時間ごとの位置=残像で、線の密度がそのまま速さの分布になっています(詰まっている=遅い)。行き過ぎる曲線でも枠からはみ出さないよう、AとBの値域をまとめて帯の幅へ写しているため、進み 0 と 1 の位置は帯の中の縦線で示しています。
linear() への近似も出します。3次ベジェは山ひとつまでしか表せないため、バウンドのような動きは書けません。CSSの linear() は点をつないだ折れ線で緩急を指定する関数で、このツールは曲線を600点でサンプルしたうえで、縦方向(進み)の誤差が指定値以下になるまで点を間引いて出力します。誤差を横方向や点の間隔で測ると、急峻な区間の誤差が見逃されます——linear() が点と点の間を直線で補間する以上、測るべきは縦方向の差です。出力の下に実際の最大誤差と点数を表示しています。
参考サイトの実測値を確かめる用途にも使えます。DevToolsでコピーした cubic-bezier(…) を貼り付けると、曲線の形と実際の動きがすぐ見られます。計算はすべてブラウザ内で完結し、入力はサーバーへ送信されません。URLパラメータで直接呼び出せます: /easing/?a=0.34,1.56,0.64,1&b=ease-out-expo&dur=900&prop=x
Other Tools
- 01画像→WebP一括変換WebP Converter
- 02白背景の透過White BG Remover
- 03コントラスト比チェッカーContrast Checker
- 04文字数カウントCharacter Counter
- 05llms.txt ジェネレーターllms.txt Generator
- 06JSON-LD構造化データ生成JSON-LD Generator
- 07Markdown→PDF変換MD → PDF
- 08OGPメタタグ生成ウィザードOGP Wizard
- 09faviconジェネレーターFavicon Generator
- 10TikTok投稿ツールTikTok Publisher
- 11文字コード・改行コード変換Encoding Converter
- 12画像→AVIF変換+picture生成AVIF Converter
- 13テストデータ生成Test Data Generator
- 14Marp Markdown→スライドMarp Slides
- 15テキスト・コード差分チェッカーDiff Checker
- 16Cron式ビジュアル解説&発火日時Cron Explainer
- 17Base64 & Data URI変換Base64 & Data URI
- 18URLパラメータ分解・UTMタグ編集URL Parameters
- 19HTMLエンティティ・特殊文字エスケープHTML Escape
- 20JSON ⇄ YAML 相互変換&整形JSON ⇄ YAML
- 21PX ⇄ REM / EM 単位変換&スケール表PX ⇄ REM / EM
- 22Colorコード変換&アルファ透過Color Converter
- 23MD5 / SHA-256 ハッシュ生成Hash Generator
- 24JWTデコーダー&有効期限チェッカーJWT Decoder
- 25User-Agent解析&デバイス判定User-Agent Parser
- 26UUID (v4) & ULID 一括生成UUID & ULID Generator
- 27アスペクト比計算&レスポンシブサイズAspect Ratio Calculator
- 28Markdownテーブル整形&CSV/TSV変換Markdown Table
- 29SQLクエリフォーマッター&整形SQL Formatter
- 30QRコード生成QR Code Generator
- 31正規表現テスターRegex Tester
- 32UNIXタイムスタンプ⇄日時変換Unix Time Converter
- 33新規タブメモ帳New Tab Memo
- 34画像リサイズ&クロップImage Resizer
- 35EXIF情報の確認&除去EXIF Viewer
- 36robots.txt ジェネレーターrobots.txt Generator
- 37安全なパスワード生成Password Generator
- 38文字列ケース変換Case Converter
- 39CSV/TSV ⇄ JSON 相互変換CSV ⇄ JSON
- 40PDF結合・分割・ページ抽出PDF Merge & Split
- 41全角⇄半角変換&テキストクリーナーZenkaku ⇄ Hankaku
- 42X(Twitter)投稿の文字ウェイト計算X Post Counter
- 43CSS clamp() フルイドタイポグラフィ計算機CSS clamp() Calculator
- 44CSSグラデーションジェネレーターCSS Gradient Generator
- 45画像からカラーパレット抽出Palette Extractor
- 46QRコード読み取りQR Code Reader
- 47SVG最適化&data URI化SVG Optimizer
- 48リダイレクトルール ジェネレーターRedirect Generator
- 49IPアドレス・CIDR計算機CIDR Calculator
- 50カレンダー予定(.ics)ジェネレーターICS Generator