Hvað er þetta verkfæri?
cubic-bezier() er CSS-tímasetningarfall sem stjórnar því hvernig hreyfð eða umbreytt gildi hraðar og hægir á sér yfir tíma, í stað þess að hreyfast á jöfnum hraða. Það er skilgreint af tveimur stýripunktum — (x1, y1) og (x2, y2) — sem sveigja feril milli fasts upphafspunkts (0,0) og fasts endapunkts (1,1). X-gildin verða að vera á milli 0 og 1, en y-gildin geta farið út fyrir það bil til að skapa yfirskots- eða skopp-áhrif.
Þegar þetta er skrifað í höndunum tekur það mikla tilraunavinnu að stilla fjórar tugatölur til að ná fram tilfinningu sem er hvorki of snögg né of mjúk. Þetta verkfæri kemur í stað þeirrar ágiskunar með beinni stýringu: dragðu sleða, sjáðu ferilinn sveigjast og forskoðunarkúluna hreyfast í samræmi við það, og afritaðu kóðann þegar hreyfingin er orðin rétt.
Heimild: CSS Easing Functions Level 1, W3C — staðallinn sem skilgreinir cubic-bezier() og nöfnu lykilorðin fimm sem forstillingar þessa verkfæris byggja á.
Af hverju að nota það?
- Lifandi SVG-graf sýnir nákvæmlega hvernig ferillinn þinn sveigist milli fasta upphafs- og endapunktsins, með báða stýripunktana og handföng þeirra teiknuð til skýringar.
- Spilunarhnappurinn hreyfir forskoðunarþátt eftir braut með nákvæmum ferlinum þínum, svo þú getir fundið hreyfinguna en ekki bara séð stöðugt graf.
- Forstillingar með einum smelli fyrir hinar fimm stöðluðu, nafngreindu hraðabreytingaraðgerðir — ease, ease-in, ease-out, ease-in-out og linear — eins og þær eru skjalfestar í CSS Easing Functions staðlinum.
- Y-gildi geta farið undir 0 eða yfir 1, sem gerir þér kleift að búa til yfirskots-/skopp-hraðabreytingar sem nafngreindu lykilorðin geta ekki framkallað.
- Skilar tilbúnum CSS-kóða sem heitir transition-timing-function — sama gildi virkar líka fyrir animation-timing-function.
- Keyrir alfarið í vafranum þínum — ekkert sem þú stillir er sent neitt. Ókeypis, engin skráning.
Hvernig á að nota það
- Dragðu x1/y1 sleðana til að setja fyrsta stýripunktinn, sem mótar hvernig hreyfimyndin byrjar.
- Dragðu x2/y2 sleðana til að setja annan stýripunktinn, sem mótar hvernig hreyfimyndin endar.
- Fylgstu með svarta ferlinum á grafinu — ferill sem bungar upp fyrir ofan skálínuna í byrjun þýðir að hreyfingin byrjar hratt, en einn sem heldur sig fyrir neðan hana þýðir að hreyfingin byrjar hægt.
- Smelltu á Spila til að sjá forskoðunarþátt hreyfast eftir brautinni með ferlinum þínum sem transition-timing-function.
- Prófaðu forstillingu (ease, ease-in, ease-out, ease-in-out, linear) sem upphafspunkt og fínstilltu síðan sleðana þaðan.
- Afritaðu CSS-kóðann sem myndast og límdu hann inn í transition- eða animation-reglu.
Dæmi
Inntak
x1: 0.25, y1: 0.1, x2: 0.25, y2: 1Úttak
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);Þetta er staðlaða CSS-lykilorðið ease skrifað út sem skýra stýripunkta — hröð byrjun, snörp hröðun og síðan smám saman hægari hreyfing undir lokin.
Af hverju y-gildi geta farið yfir 0–1
Ólíkt x-ásnum, sem táknar tíma og verður að ganga frá 0 til 1, táknar y-ásinn framvindu hreyfða gildisins og hefur enga slíka takmörkun. Ef y1 er stillt undir 0 eða y2 yfir 1 dýfir ferillinn niður fyrir upphafsgildið eða skýtur yfir endagildið áður en hann jafnar sig — grunnurinn að yfirskots- og eftirvæntingaráhrifum sem notuð eru í hnappaþrýstingum, opnun gluggabirtinga og leikandi örsamskiptum í viðmóti. Ekkert af lykilorðunum fimm (ease, ease-in, ease-out, ease-in-out, linear) getur framkallað þetta; til þess þarf sérsniðna cubic-bezier().
transition-timing-function á móti animation-timing-function
cubic-bezier() gildið sem þetta verkfæri myndar virkar eins í báðum eiginleikum. Notaðu transition-timing-function þegar hreyfingin er ræst af stöðubreytingu (eins og að hover eða skipta um flokk), og animation-timing-function inni í @keyframes-drifinni hreyfimyndarreglu þegar þú þarft sömu hraðabreytingartilfinningu beitt sjálfkrafa eða í lykkju.
Algeng hraðabreytingarmynstur
- Snögg viðmótsviðbrögð (hnappar, rofar): haltu stýripunktunum nálægt skálínunni með örlítilli ease-out halla, t.d. cubic-bezier(0.4, 0, 0.2, 1).
- Staðalferill Material Design: cubic-bezier(0.4, 0, 0.2, 1) — hröð byrjun, mjúkur endir, mikið notaður fyrir umbreytingar á spjöldum og kortum.
- Skopp/yfirskot: ýttu y2 yfir 1, t.d. cubic-bezier(0.34, 1.56, 0.64, 1), fyrir leikandi birtingaráhrif.
- Eftirvænting fyrir hreyfingu: ýttu y1 undir 0 svo þátturinn dragist örlítið til baka áður en hann hreyfist áfram.
- Mjúkt ease-in-out fyrir endurteknar hreyfimyndir: haltu ferlinum nálægt samhverfum kringum miðjuna.
Notkun með öðrum CSS-verkfærum
Hraðabreytingarferill stendur sjaldan einn og sér — hann er venjulega notaður á þátt sem þarf líka skugga, ávalar horn eða litstigla skilgreinda. Búðu til myndræna útlitið með hinum CSS-verkfærunum hér fyrir neðan og bættu svo tímasetningarfallinu úr þessu verkfæri við sömu reglu eða transition/animation-yfirlýsingu.
Algengar spurningar
Hvað þýða tölurnar fjórar í cubic-bezier() í raun?
Þær eru hnit tveggja stýripunkta, (x1, y1) og (x2, y2), sem sveigja Bézier-feril sem gengur frá föstum upphafspunkti í (0,0) að föstum endapunkti í (1,1). X-ásinn táknar liðinn tíma (0 til 1) og y-ásinn táknar hversu langt hreyfði eiginleikinn hefur komist, og þess vegna verða x1 og x2 að vera innan 0–1 á meðan y1 og y2 geta farið út fyrir það bil.
Hver er munurinn á ease, ease-in, ease-out og ease-in-out?
ease (sjálfgefið í CSS) byrjar hratt og hægir svo mjúklega á sér. ease-in byrjar hægt og eykur hraðann í átt að endanum, gagnlegt fyrir þætti sem yfirgefa skjáinn. ease-out byrjar hratt og hægir á sér, gagnlegt fyrir þætti sem koma inn á skjáinn. ease-in-out er hægt á báðum endum og hraðara í miðjunni, sem gefur mjúka, samhverfa tilfinningu.
Get ég notað sama cubic-bezier() gildið bæði fyrir umbreytingar og hreyfimyndir?
Já. transition-timing-function og animation-timing-function taka við nákvæmlega sömu cubic-bezier() setningafræði og skila sama hraðabreytingarferli — eini munurinn er hvaða CSS-eiginleiki (umbreyting eða keyframes-hreyfimynd) tímasetningarfallið er tengt við.
Af hverju lítur ferillinn minn út fyrir að vera bilaður þegar y1 eða y2 er mjög stórt eða neikvætt?
Það er eðlilegt — að ýta y-gildum langt út fyrir 0–1 skapar sterkt yfirskot, þar sem hreyfða gildið sveiflast langt fram úr markmiði sínu áður en það jafnar sig. Þetta eru gild og oft meðvituð áhrif, en ef það lítur út fyrir að vera óæskilegt skaltu færa y1 og y2 nær 0–1 bilinu aftur.
Er sérsniðinn ferill betri en að nota bara nafngreindu lykilorðin?
Ekki endilega — lykilorðin fimm (ease, ease-in, ease-out, ease-in-out, linear) ná yfir flestar hversdagslegar þarfir og eru auðveldari aflestrar í kóða. Gríptu til sérsniðinnar cubic-bezier() þegar þú þarft ákveðna tilfinningu sem lykilorðin veita ekki, svo sem skopp, snarpari smell eða samræmi við hreyfilýsingu tiltekins hönnunarkerfis.