CodeKitHub
CSS nástroje

Generátor CSS cubic-bezier

Naposledy aktualizované:

Tento nástroj umožňuje tvarovať vlastnú krivku časovania cubic-bezier() pomocou štyroch posuvníkov a náhľad si pozrieť naživo pred skopírovaním kódu. Upravte hodnoty riadiacich bodov x1, y1, x2 a y2, sledujte, ako sa krivka a pohybujúci sa náhľadový prvok okamžite aktualizujú, a potom skopírujte transition-timing-function: cubic-bezier(...) priamo do svojho štýlopisu.

Curve

Presets

Generated CSS

Also works with animation-timing-function.

Čo je tento nástroj?

cubic-bezier() je CSS časovacia funkcia, ktorá riadi, ako animovaná alebo prechodová hodnota v čase zrýchľuje a spomaľuje, namiesto pohybu konštantnou rýchlosťou. Je definovaná dvoma riadiacimi bodmi — (x1, y1) a (x2, y2) — ktoré ohýbajú krivku medzi pevným počiatočným bodom (0,0) a koncovým bodom (1,1). Hodnoty x musia zostať medzi 0 a 1, ale hodnoty y môžu ísť mimo tento rozsah a vytvárať efekty preskočenia alebo odrazu.

Ručné doladenie štyroch desatinných čísel tak, aby výsledný pocit nebol ani príliš prudký, ani príliš rozmazaný, si vyžaduje veľa pokusov a omylov. Tento nástroj nahrádza toto hádanie priamou manipuláciou: potiahnite posuvník, sledujte, ako sa krivka ohýba a náhľadová guľôčka podľa toho pohybuje, a skopírujte CSS, keď pohyb pôsobí správne.

Zdroj: CSS Easing Functions Level 1, W3C — špecifikácia definujúca cubic-bezier() a päť pomenovaných kľúčových slov, na ktorých sú založené prednastavenia tohto nástroja.

Prečo ho používať?

  • Živý SVG graf presne zobrazuje, ako sa vaša krivka ohýba medzi pevným počiatočným a koncovým bodom, pričom sú pre prehľadnosť nakreslené oba riadiace body aj ich úchyty.
  • Tlačidlo prehrávania animuje náhľadový prvok naprieč dráhou pomocou vašej presnej krivky, takže pohyb skutočne pocítite, nielen uvidíte statický graf.
  • Prednastavenia jedným kliknutím pre päť štandardných pomenovaných časovacích funkcií — ease, ease-in, ease-out, ease-in-out a linear — ako sú zdokumentované v špecifikácii CSS Easing Functions.
  • Hodnoty Y môžu klesnúť pod 0 alebo prekročiť 1, čo umožňuje vytvárať časovania s preskočením/odrazom, ktoré pomenované kľúčové slová nedokážu vyprodukovať.
  • Generuje pripravené CSS pre transition-timing-function — rovnaká hodnota funguje aj pre animation-timing-function.
  • Beží úplne vo vašom prehliadači — nič, čo nakonfigurujete, sa nikam nenahráva. Zadarmo, bez registrácie.

Ako sa používa

  1. Potiahnite posuvníky x1/y1 na nastavenie prvého riadiaceho bodu, ktorý tvaruje, ako animácia začína.
  2. Potiahnite posuvníky x2/y2 na nastavenie druhého riadiaceho bodu, ktorý tvaruje, ako animácia končí.
  3. Sledujte čiernu krivku na grafe — krivka, ktorá sa na začiatku vydúva nad diagonálu, znamená, že pohyb začína rýchlo, krivka, ktorá zostáva pod ňou, znamená, že pohyb začína pomaly.
  4. Kliknite na Prehrať, aby ste videli náhľadový prvok pohybujúci sa naprieč dráhou pomocou vašej krivky ako transition-timing-function.
  5. Vyskúšajte prednastavenie (ease, ease-in, ease-out, ease-in-out, linear) ako východiskový bod a odtiaľ posuňte posuvníky.
  6. Skopírujte vygenerované CSS a vložte ho do pravidla transition alebo animation.

Prí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 štandardné CSS kľúčové slovo ease vypísané ako explicitné riadiace body — rýchly začiatok, prudké zrýchlenie, potom postupné spomalenie ku koncu.

Prečo hodnoty y môžu presiahnuť 0–1

Na rozdiel od osi x, ktorá predstavuje čas a musí prebiehať od 0 do 1, os y predstavuje priebeh animovanej hodnoty a nemá takéto obmedzenie. Nastavenie y1 pod 0 alebo y2 nad 1 spôsobí, že krivka klesne pod počiatočnú hodnotu alebo prestrelí koncovú hodnotu pred ustálením — základ efektov preskočenia a anticipácie používaných pri stlačeniach tlačidiel, vyskakovaní modálnych okien a hravých mikrointerakciách rozhrania. Žiadne z piatich pomenovaných kľúčových slov (ease, ease-in, ease-out, ease-in-out, linear) toto nedokáže vyprodukovať; na to potrebujete vlastnú cubic-bezier().

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

Hodnota cubic-bezier(), ktorú tento nástroj generuje, funguje identicky v oboch vlastnostiach. Použite transition-timing-function, keď je pohyb spustený zmenou stavu (napríklad hover alebo prepnutie triedy), a animation-timing-function vnútri pravidla animácie riadenej @keyframes, keď potrebujete rovnaký pocit časovania aplikovaný automaticky alebo v slučke.

Bežné vzory časovania

  • Svižná spätná väzba rozhrania (tlačidlá, prepínače): udržujte riadiace body blízko diagonály s miernym sklonom k ease-out, napr. cubic-bezier(0.4, 0, 0.2, 1).
  • Štandardná krivka Material Design: cubic-bezier(0.4, 0, 0.2, 1) — rýchly začiatok, jemný koniec, široko používané pri prechodoch panelov a kariet.
  • Odraz/preskočenie: posuňte y2 nad 1, napr. cubic-bezier(0.34, 1.56, 0.64, 1), pre hravý pocit vyskočenia.
  • Anticipácia pred pohybom: posuňte y1 pod 0, aby sa prvok mierne stiahol späť pred pohybom vpred.
  • Plynulé ease-in-out pre opakujúce sa animácie: udržujte krivku blízko symetrickú okolo stredu.

Kombinácia s ďalšími CSS nástrojmi

Krivka časovania zriedka stojí samostatne — zvyčajne sa aplikuje na prvok, ktorý potrebuje aj definované tiene, zaoblené rohy alebo gradienty. Vytvorte vizuálny štýl s ostatnými CSS nástrojmi nižšie a potom pridajte časovaciu funkciu z tohto nástroja do rovnakého pravidla alebo deklarácie transition/animation.

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

Časté otázky

Čo vlastne znamenajú štyri čísla v cubic-bezier()?

Sú to súradnice dvoch riadiacich bodov, (x1, y1) a (x2, y2), ktoré ohýbajú Bézierovu krivku prebiehajúcu od pevného počiatočného bodu (0,0) k pevnému koncovému bodu (1,1). Os x predstavuje uplynutý čas (0 až 1) a os y predstavuje, ako ďaleko animovaná vlastnosť pokročila, preto x1 a x2 musia zostať v rozsahu 0–1, zatiaľ čo y1 a y2 môžu ísť mimo tento rozsah.

Aký je rozdiel medzi ease, ease-in, ease-out a ease-in-out?

ease (predvolené v CSS) začína rýchlo a potom jemne spomaľuje. ease-in začína pomaly a zrýchľuje smerom ku koncu, užitočné pre prvky opúšťajúce obrazovku. ease-out začína rýchlo a spomaľuje, užitočné pre prvky vstupujúce na obrazovku. ease-in-out je pomalé na oboch koncoch a rýchlejšie v strede, čo dáva plynulý, symetrický pocit.

Môžem použiť rovnakú hodnotu cubic-bezier() aj pre prechody, aj pre animácie?

Áno. transition-timing-function a animation-timing-function prijímajú presne rovnakú syntax cubic-bezier() a produkujú rovnakú krivku časovania — jediný rozdiel je, na ktorú CSS funkciu (prechod vs. animácia s keyframes) je táto časovacia funkcia pripojená.

Prečo moja krivka vyzerá rozbito, keď je y1 alebo y2 veľmi veľké alebo záporné?

To je očakávané — posunutie hodnôt y ďaleko mimo 0–1 vytvára silné preskočenie, kde animovaná hodnota kmitá výrazne za svoj cieľ pred ustálením. Ide o platný a často zámerný efekt, no ak vyzerá nechcene, vráťte y1 a y2 bližšie k rozsahu 0–1.

Je vlastná krivka lepšia než len použitie pomenovaných kľúčových slov?

Nie nevyhnutne — päť kľúčových slov (ease, ease-in, ease-out, ease-in-out, linear) pokrýva väčšinu bežných potrieb a v kóde sa ľahšie čítajú. Siahnite po vlastnej cubic-bezier(), keď potrebujete konkrétny pocit, ktorý kľúčové slová neposkytujú, ako je odraz, ostrejšie cvaknutie alebo zhoda s konkrétnou špecifikáciou pohybu dizajnového systému.

Súvisiace nástroje