CodeKitHub
CSS nástroje

Generátor CSS Cubic-Bezier

Naposledy aktualizováno:

Tento nástroj vám umožní vytvarovat vlastní CSS easing křivku cubic-bezier() pomocí čtyř posuvníků a náhled si prohlédnout naživo předtím, než zkopírujete kód. Upravte hodnoty kontrolních bodů x1, y1, x2 a y2, sledujte okamžitou aktualizaci křivky a pohybujícího se náhledového elementu, poté zkopírujte transition-timing-function: cubic-bezier(...) přímo do svého stylopisu.

Curve

Presets

Generated CSS

Also works with animation-timing-function.

Co je tento nástroj?

cubic-bezier() je CSS časovací funkce, která řídí, jak animovaná nebo přecházená hodnota zrychluje a zpomaluje v čase, místo pohybu konstantní rychlostí. Je definovaná dvěma kontrolními body — (x1, y1) a (x2, y2) — které ohýbají křivku mezi pevným počátečním bodem (0,0) a koncovým bodem (1,1). Hodnoty x musí zůstat mezi 0 a 1, ale hodnoty y mohou jít mimo tento rozsah pro vytvoření efektů přestřelení nebo odrazu.

Ručně napsané ladění čtyř desetinných čísel, aby výsledný pocit nebyl ani příliš prudký, ani příliš rozvláčný, vyžaduje spoustu pokusů a omylů. Tento nástroj nahrazuje toto hádání přímou manipulací: přetáhněte posuvník, sledujte, jak se křivka ohýbá a náhledový míček odpovídajícím způsobem pohybuje, a zkopírujte CSS, jakmile pohyb vypadá správně.

Zdroj: CSS Easing Functions Level 1, W3C — specifikace definující cubic-bezier() a pět pojmenovaných klíčových slov, na kterých jsou založené předvolby tohoto nástroje.

Proč ho používat?

  • Živý SVG graf přesně ukazuje, jak se vaše křivka ohýbá mezi pevným počátečním a koncovým bodem, s vykreslenými oběma kontrolními body a jejich úchyty pro přehlednost.
  • Tlačítko Play animuje náhledový element po dráze pomocí vaší přesné křivky, takže pohyb můžete cítit, ne jen vidět jako statický graf.
  • Předvolby na jedno kliknutí pro pět standardních pojmenovaných easing funkcí — ease, ease-in, ease-out, ease-in-out a linear — jak jsou zdokumentovány ve specifikaci CSS Easing Functions.
  • Hodnoty y mohou jít pod 0 nebo nad 1, což umožňuje vytvořit easingy ve stylu přestřelení/odrazu, které pojmenovaná klíčová slova nedokáží vytvořit.
  • Vypisuje připravené CSS pro transition-timing-function — stejná hodnota funguje i pro animation-timing-function.
  • Běží kompletně ve vašem prohlížeči — nic, co nastavíte, se nikam nenahrává. Zdarma, bez registrace.

Jak se používá

  1. Přetáhněte posuvníky x1/y1, abyste nastavili první kontrolní bod, který tvaruje, jak animace začíná.
  2. Přetáhněte posuvníky x2/y2, abyste nastavili druhý kontrolní bod, který tvaruje, jak animace končí.
  3. Sledujte černou křivku na grafu — křivka, která se na začátku vydouvá nad diagonálu, znamená, že pohyb začíná rychle, ta, která zůstává pod ní, znamená, že pohyb začíná pomalu.
  4. Klikněte na Play, abyste viděli náhledový element pohybující se po dráze pomocí vaší křivky jako transition-timing-function.
  5. Vyzkoušejte předvolbu (ease, ease-in, ease-out, ease-in-out, linear) jako výchozí bod, poté odtud posuvníky doladíte.
  6. Zkopírujte vygenerované CSS a vložte ho do pravidla transition nebo animation.

Příklad

Vstup

x1: 0.25, y1: 0.1, x2: 0.25, y2: 1

Výstup

transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);

Toto je standardní CSS klíčové slovo ease vypsané jako explicitní kontrolní body — rychlý start, prudké zrychlení a poté postupné zpomalování směrem ke konci.

Proč mohou hodnoty y přesáhnout 0–1

Na rozdíl od osy x, která představuje čas a musí běžet od 0 do 1, osa y představuje průběh animované hodnoty a nemá žádný takový limit. Nastavení y1 pod 0 nebo y2 nad 1 způsobí, že křivka klesne pod počáteční hodnotu nebo vystřelí nad koncovou hodnotu, než se ustálí — základ efektů přestřelení a anticipace používaných při stisknutí tlačítka, otevírání modálních oken a hravých mikrointerakcích UI. Žádné z pěti pojmenovaných klíčových slov (ease, ease-in, ease-out, ease-in-out, linear) toto nedokáže vytvořit; pro to potřebujete vlastní cubic-bezier().

transition-timing-function vs. animation-timing-function

Hodnota cubic-bezier(), kterou tento nástroj generuje, funguje shodně v obou vlastnostech. Použijte transition-timing-function, když je pohyb spouštěn změnou stavu (jako hover nebo přepnutí třídy), a animation-timing-function uvnitř pravidla animace řízeného @keyframes, když potřebujete stejný pocit easingu aplikovaný automaticky nebo ve smyčce.

Běžné vzory easingu

  • Svižná UI zpětná vazba (tlačítka, přepínače): udržujte kontrolní body blízko diagonály s mírnou tendencí k ease-out, např. cubic-bezier(0.4, 0, 0.2, 1).
  • Standardní křivka Material Design: cubic-bezier(0.4, 0, 0.2, 1) — rychlý start, jemné dokončení, široce používaná pro přechody panelů a karet.
  • Odraz/přestřelení: posuňte y2 nad 1, např. cubic-bezier(0.34, 1.56, 0.64, 1), pro hravý pocit vyskočení.
  • Anticipace před pohybem: posuňte y1 pod 0, aby se element před posunem vpřed mírně stáhl zpět.
  • Plynulý ease-in-out pro smyčkové animace: udržujte křivku téměř symetrickou kolem středu.

Kombinace s dalšími CSS nástroji

Easing křivka málokdy stojí sama — obvykle se aplikuje na element, který také potřebuje definované stíny, zaoblené rohy nebo gradienty. Vygenerujte vizuální styling pomocí dalších CSS nástrojů níže, poté přidejte časovací funkci z tohoto nástroje do stejného pravidla nebo deklarace transition/animation.

Generátor box-shadow · Generátor border-radius

Časté dotazy

Co ve skutečnosti znamenají čtyři čísla v cubic-bezier()?

Jsou to souřadnice dvou kontrolních bodů, (x1, y1) a (x2, y2), které ohýbají Bézierovu křivku běžící od pevného počátečního bodu na (0,0) k pevnému koncovému bodu na (1,1). Osa x představuje uplynulý čas (0 až 1) a osa y představuje, jak daleko postoupila animovaná vlastnost, což je důvod, proč x1 a x2 musí zůstat v rozsahu 0–1, zatímco y1 a y2 mohou jít mimo tento rozsah.

Jaký je rozdíl mezi ease, ease-in, ease-out a ease-in-out?

ease (výchozí CSS hodnota) začíná rychle a poté jemně zpomaluje. ease-in začíná pomalu a zrychluje směrem ke konci, užitečné pro elementy opouštějící obrazovku. ease-out začíná rychle a zpomaluje, užitečné pro elementy vstupující na obrazovku. ease-in-out je pomalý na obou koncích a rychlejší uprostřed, což dává plynulý, symetrický pocit.

Můžu použít stejnou hodnotu cubic-bezier() pro přechody i animace?

Ano. transition-timing-function a animation-timing-function přijímají přesně stejnou syntaxi cubic-bezier() a produkují stejnou easing křivku — jediný rozdíl je, ke které CSS funkci (transition vs. animace pomocí keyframes) je ta časovací funkce připojena.

Proč moje křivka vypadá rozbitá, když je y1 nebo y2 velmi velké nebo záporné?

To je očekávané — posunutí hodnot y daleko mimo rozsah 0–1 vytváří silné přestřelení, kdy animovaná hodnota výrazně přestřelí svůj cíl, než se ustálí. Je to platný a často záměrný efekt, ale pokud vypadá nechtěně, přibližte y1 a y2 zpět blíže k rozsahu 0–1.

Je vlastní křivka lepší než jen použití pojmenovaných klíčových slov?

Ne nutně — pěti klíčových slov (ease, ease-in, ease-out, ease-in-out, linear) pokrývá většinu běžných potřeb a je snazší je číst v kódu. Sáhněte po vlastní cubic-bezier(), když potřebujete specifický pocit, který klíčová slova neposkytují, jako odraz, ostřejší cvaknutí nebo shodu se specifickou pohybovou specifikací design systému.

Související nástroje