視覺化產生器將四個控制座標直接對應到符合標準的 transition-timing-function 宣告,因此你可以調整數字、檢查取樣進度,並在複製之前預覽結果。Cubic-bezier 的數值之所以難以手寫,是因為這四個數字定義的是參數曲線上的兩個中段點,而非經過時間的函數。瀏覽器沿著水平軸讀取輸入進度,並從垂直軸讀取輸出進度,因此一條在圖上看起來對稱的曲線,實際上可能產生截然不同的動態。憑記憶挑選數字,通常意味著每個要上線的動畫,都得在 DevTools 中反覆嘗試。一個能將 x 限制在 CSS 有效範圍內、顯示完整數字組,並展示數值進度取樣的視覺化工具,就能消除這種猜測。最終輸出是一組四個數字的宣告,你可以貼到任何使用緩動函數的 CSS 屬性中,並確信曲線能正確解析,表現也與預覽一致。

為何專用產生器勝過手動調整的數值
憑記憶撰寫 cubic-bezier 數值,是正式環境 CSS 中緩動失效最常見的原因之一。第一個陷阱是把這四個數字當作一般的時間對進度函數,但實際上它們是參數曲線上的控制座標。第二個陷阱是忘記 CSS 要求 x1 與 x2 必須保持在 0 到 1 的封閉區間內,而 y1 與 y2 則可以超出該範圍以製造預期或過衝效果。第三個陷阱是使用在某個情境中感覺合適的數值,但套用到不同的屬性、距離或持續時間時,卻顯得遲鈍、過衝過重或失衡。
專門打造的 CSS Cubic Bezier 產生器會透過強制該限制、顯示標準化的關鍵字對應,並將輸出同時呈現為圖形與數值表格,來消除這些陷阱。你不必再猜測,而是從已知的可靠預設或已記錄的參考值出發,接著只做一項精準調整,並讀取表格所顯示的內容。
可靠的產生器應提供什麼
一個好的緩動工具,功能不僅止於在畫布上繪製曲線。它必須讓你確信輸出符合標準、預覽與數學一致,且你的任何操作都不會離開瀏覽器。CSS Cubic Bezier 產生器同時提供幾項訊號:
- 在固定起點 (0, 0) 與終點 (1, 1) 之間的參數曲線即時圖形,兩個可編輯的控制點以可拖曳的控制柄顯示。
- 隨控制點變動而更新的精確 transition-timing-function 宣告,數字以三位小數序列化,而底層運算則維持完整的 JavaScript 精度。
- 在輸入進度 0、0.25、0.5、0.75 與 1 的五列取樣表格,顯示曲線在每個步驟實際產生的輸出值。
- 一個執行預覽,使用 900 毫秒的 transform 過渡與精確產生的緩動字串,在兩個位置之間切換一個圓形,以便比較正向與反向動態。
- linear、ease、ease-in、ease-out 與 ease-in-out 的關鍵字按鈕,載入標準化的 cubic-bezier 等效值,而不是只寫關鍵字本身。
由於所有運算皆在本機執行,因此不會上傳、儲存或傳送任何曲線、座標或互動資料到動畫服務。完整的數字組始終可見,這讓曲線易於記錄、稽核與分享,而沒有隱藏的預設值。
如何產生有效的 CSS Cubic Bezier
- 挑選起始預設或輸入座標。選擇五個 CSS 緩動關鍵字之一以載入標準化曲線,或直接將 x1、y1、x2 與 y2 輸入到四個輸入欄位中。x 輸入限制在 0 到 1,因為 CSS 會將超出該範圍的任何數值視為無效;而 y 輸入則接受負十到正十之間的有限值,以允許預期與過衝效果。
- 同時閱讀圖形、取樣與預覽。觀察圖上曲線的變化,在取樣表格中檢查 0、0.25、0.5、0.75 與 1 的五個輸出值,並點擊執行預覽以即時查看圓形的移動。請一次只做一項調整,才能將每個變更與可見的效果連結起來。
- 複製宣告並在實際位置測試。使用 Copy CSS 將完整的 transition-timing-function 宣告放入剪貼簿,將其貼到實際的規則中,搭配你打算使用的屬性、距離與持續時間,接著在情境中確認焦點、指標與減少動態的行為仍然正確。
標準緩動關鍵字及其控制點
五個 CSS 緩動關鍵字,是 W3C CSS Easing Functions Level 1 中所定義之已記錄 cubic-bezier 數值的捷徑。當產生器顯示這四個數字而非只寫關鍵字時,就能讓你記錄並修改每個預設,而無需背誦整張表格。
| 關鍵字 | x1 | y1 | x2 | y2 | 感受 |
|---|---|---|---|---|---|
| linear | 0.000 | 0.000 | 1.000 | 1.000 | 從頭到尾保持等速 |
| ease | 0.250 | 0.100 | 0.250 | 1.000 | 預設的慢-快-慢曲線 |
| ease-in | 0.420 | 0.000 | 1.000 | 1.000 | 緩慢開始,逐漸加速到結束 |
| ease-out | 0.000 | 0.000 | 0.580 | 1.000 | 快速開始,逐漸減速到結束 |
| ease-in-out | 0.420 | 0.000 | 0.580 | 1.000 | 兩端緩慢,中段最快 |
請將這些對應作為起始參考,接著以你自己的元件驗證結果,而不是預設該預設值在任何地方都會感覺合適。
正確閱讀數值取樣
取樣表格回答了一個僅靠圖形無法回答的問題:當經過一段固定比例的時間時,動畫值已進展了多少。CSS 的時間設定將經過時間放在 x 軸上,因此曲線參數並不等於輸入比例,除非兩個 x 控制點恰好都位於 0.5。產生器會找出 x 座標等於所要求的輸入之參數,然後再求 y,因此在 0.5 那一列反映的是動畫進行到一半時使用者實際看到的結果,而非 t 等於 0.5 時的 y 值。
在內部,該求解器使用有界的牛頓迭代,並在牛頓法發散時退回到二分法。數學在介面上是不可見的,但這正是預覽與表格一致的原因。如果你看到一條看似溫和的曲線,與 0.5 的取樣看起來極端不符,原因通常是一個 x 控制座標將中點拉向曲線中較陡峭的區段。
在實際條件下測試宣告
執行預覽展示的是時間,而非每種工作負載下的正式環境效能。當距離、持續時間、屬性、算繪成本、輸入裝置或周圍動態改變時,真實元件的感覺可能會不同,因此請將宣告貼到實際規則中,並在情境中觀察。留意當 y1 或 y2 超出 0 到 1 範圍時,元素是否會離開其容器、視覺上反轉,或顯示出原本預期保持裁切的內容。在非必要的動畫上尊重減少動態的偏好,並確保即使完全沒有動態,重要的狀態變更仍可理解。
關於瀏覽器行為與其他緩動函數語法,MDN cubic-bezier 參考文件中說明了 cubic-bezier() 如何與 animation、transition 與 keyframe 屬性互動。
隱私與運算位置
所有曲線運算都在瀏覽器中執行。不會上傳、儲存或傳送任何曲線、控制座標、CSS 宣告或互動資料到動畫服務。剪貼簿存取權僅在你點擊 Copy CSS 時才會請求,若瀏覽器拒絕該權限,宣告仍會保持可見且可選取,讓你仍能手動複製。由於本工具聚焦於單一 cubic-bezier 時間函數,而非完整的 transition 簡寫,因此你可掌控該緩動所套用的屬性、持續時間、延遲與迭代次數。
如果你正在權衡選項,如何使用原生 HTML 產生 CSS 切換開關對此有詳細說明。
如果你正在權衡選項,在產生 CSS 三角形時重複相同的結果對此有詳細說明。