Menu

Generator krzywych cubic-bezier

Rysuj własne krzywe easing CSS z podglądem animacji na żywo.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest generator easingu cubic-bezier?

*Funkcja easingu* w CSS określa, jak animacja przyspiesza i zwalnia w trakcie trwania. Słowa kluczowe ease, ease-in, ease-out i ease-in-out to skróty do czterech konkretnych krzywych. Do wszystkiego poza nimi CSS daje ci cubic-bezier(): funkcję, która przyjmuje cztery liczby i rysuje własną krzywą.

Te cztery liczby to współrzędne dwóch punktów kontrolnych (x1, y1, x2, y2). Trudno je pisać ręcznie, bo drobne zmiany dają duży efekt wizualny, a małe przestrzelenia tworzą ruch *z odbiciem*, którego nie widać w samych liczbach. Edytor wizualny pozwala przeciągać uchwyty i patrzeć, jak reaguje krzywa. To dużo szybsze niż poprawianie ułamków.

Edytor Coddy rysuje krzywą na bieżąco, animuje kulkę podglądu twoim easingiem i ma presety typowych wzorców: słowa kluczowe CSS, krzywą *standard* z Material Design, wyjście z odbiciem i *anticipate* z przestrzeleniem. Skopiuj gotowy ciąg cubic-bezier() i wklej go do CSS. Wszystko działa w twojej przeglądarce.

Co warto wiedzieć o easingu cubic-bezier

  • Krzywa pokazuje *postęp* w funkcji *czasu*. Czas biegnie od lewej do prawej (0 → 1), postęp od dołu do góry (0 → 1). Prosta przekątna to linear: równy postęp w każdej jednostce czasu.
  • Współrzędne X obu punktów kontrolnych są ograniczone do 0..1. Współrzędne Y mogą zejść poniżej 0 lub przekroczyć 1. Tak powstają easingi z odbiciem, antycypacją i przestrzeleniem (animacja na chwilę mija cel albo rusza w złą stronę).
  • Krzywe *ease-out* (większość postępu na początku) są responsywne i żwawe, dobre dla wejść i reakcji przycisków. Krzywe *ease-in* (postęp pod koniec) wydają się ociężałe: w UI zwykle się nie sprawdzają, przydają się przy wyjściach.
  • Zalecany w Material Design easing *standard* to cubic-bezier(0.4, 0, 0.2, 1): szybki start, wolny koniec. iOS używa czegoś zbliżonego do cubic-bezier(0.42, 0, 0.58, 1) (ease-in-out).
  • W krótkich animacjach (≤200ms) większość easingów wygląda podobnie, bo czas trwania liczy się bardziej niż krzywa. W dłuższych (300ms+) to easing decyduje, czy ruch wydaje się dopracowany, czy niechlujny.

Jak zaprojektować easing cubic-bezier

  1. Zacznij od presetu

    Kliknij preset najbliższy efektowi, który chcesz uzyskać. *Material standard* i *Bouncy out* to dobre punkty wyjścia dla ruchu w UI, a *ease-out* to bezpieczny wybór dla animacji wejścia.

  2. Przeciągnij dwa uchwyty

    Turkusowe uchwyty to dwa punkty kontrolne. Pierwszym ustawiasz, jak animacja *zaczyna się*, drugim, jak się *kończy*. Wyciągnięcie uchwytu ponad górną krawędź daje przestrzelenie.

  3. Wybierz czas trwania i odtwórz

    Ustaw realistyczny czas trwania swojej animacji. Przejścia w UI trwają zwykle 150-300ms, ruchy akcentujące 400-600ms. Kliknij *Odtwórz ponownie*, aby uruchomić podgląd z nowym czasem.

  4. Dopracuj liczbami

    Aby wpisać dokładne wartości, użyj pól X1/Y1/X2/Y2 pod krzywą. Y może zejść poniżej 0 lub przekroczyć 1, X zawsze mieści się w 0..1.

  5. Skopiuj CSS

    Kliknij *Kopiuj*, aby dostać całą regułę transition. Wklej ją do arkusza stylów i zamień transform na właściwość, którą animujesz.

Ściąga cubic-bezier

Popularne easingi i stojące za nimi wartości cubic-bezier. Wszystkie cztery słowa kluczowe poniżej to aliasy konkretnych krzywych cubic-bezier.

EasingWartości cubic-bezierKiedy używać
ease(0.25, 0.1, 0.25, 1)Domyślny dla transition: łagodny, ale bez charakteru
linear(0, 0, 1, 1)Stała prędkość: zwykle zła dla UI, dobra dla spinnerów
ease-in(0.42, 0, 1, 1)Wolny start, szybki koniec: najlepszy do wyjść
ease-out(0, 0, 0.58, 1)Szybki start, wolny koniec: najlepszy do wejść i reakcji
ease-in-out(0.42, 0, 0.58, 1)Symetryczny: najlepszy do przełączania tam i z powrotem
Material standard(0.4, 0, 0.2, 1)Żwawy ruch nowoczesnego UI
Bouncy out(0.18, 0.89, 0.32, 1.28)Przestrzela i wraca: zabawne wejścia

Przykłady cubic-bezier do wypróbowania

Żwawa reakcja przycisku

Easing standard przy najechaniu
.btn {    transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);}.btn:hover {    transform: translateY(-2px);}

Większość uniesienia dzieje się szybko na początku, potem ruch się uspokaja. Przycisk reaguje na kursor żywo, a nie ociężale.

Wejście z odbiciem

Przestrzelenie i powrót
.card {    transition: transform 350ms cubic-bezier(0.18, 0.89, 0.32, 1.28);}

Wartość Y2 równa 1.28 sprawia, że krzywa mija cel, a potem wraca. Używaj z umiarem: ruch z odbiciem szybko męczy, jeśli wszystko porusza się w ten sposób.

Antycypacja przed ruchem do przodu

Cofnij się, potem wystrzel do przodu
.hero {    transition: transform 500ms cubic-bezier(0.68, -0.55, 0.27, 1.55);}

Ujemne Y1 oznacza, że animacja na chwilę rusza w *przeciwną* stronę, zanim dotrze do celu. To zapożyczenie z klasycznej animacji: drobna antycypacja sprawia, że główny ruch wygląda na zamierzony.

Częste błędy z easingiem

  • Używanie ease-in w animacjach wejścia. Zaczyna wolno i kończy szybko, czyli odwrotnie niż ruch, który wydaje się responsywny. Użyj ease-out.
  • Wybieranie linear dla ruchu w UI, bo wydaje się neutralny. Ruch ze stałą prędkością wygląda mechanicznie: pasuje do pasków postępu i spinnerów, ale rzadko do czegokolwiek innego.
  • Przesadzanie z przestrzeleniem w każdym przejściu. Easingi z odbiciem to akcent, a nie domyślny wybór. Użyte wszędzie wyglądają jak chaos.
  • Poprawianie zbyt wolnego ruchu zmianą easingu zamiast czasu trwania. Jeśli ease-out przez 600ms wydaje się ociężały, najpierw spróbuj 300ms.
  • Zapominanie, że współrzędne X obu uchwytów są ograniczone do 0..1. Przeciąganie uchwytu poza lewą lub prawą krawędź nic nie daje: tylko Y może wyjść poza pole.

Cubic-bezier: FAQ

Co oznaczają cztery liczby w cubic-bezier()?
To współrzędne x i y dwóch punktów kontrolnych: cubic-bezier(x1, y1, x2, y2). Pierwszy punkt kształtuje *początek* animacji, drugi jej *koniec*. X zawsze mieści się między 0 a 1 (czas), a Y może wyjść poza 0..1, aby uzyskać przestrzelenie lub antycypację (postęp).
Jakiego easingu używać w animacjach UI?
Do wejść (coś się pojawia) i reakcji (najechanie na przycisk, fokus) użyj *ease-out* albo krzywej standard z Material Design cubic-bezier(0.4, 0, 0.2, 1). Do wyjść pasuje *ease-in*. Unikaj *linear*, chyba że animujesz postęp.
Czym różni się ease od ease-out?
Oba kończą się wolno, ale ease także łagodnie startuje. ease-out rusza z pełną prędkością i zwalnia. Właśnie ten *natychmiastowy* ruch sprawia, że wydaje się bardziej responsywny niż ease.
Jak zrobić animację z odbiciem w CSS?
Przeciągnij drugi uchwyt ponad górną krawędź pola (Y2 > 1). Na przykład cubic-bezier(0.18, 0.89, 0.32, 1.28) przestrzela o około 28%, zanim się ustabilizuje. Do wielokrotnych odbić potrzebujesz @keyframes albo biblioteki z fizyką sprężyn, bo cubic-bezier może przestrzelić tylko raz.
Czy mogę używać cubic-bezier w animacjach @keyframes?
Tak. Użyj go jako animation-timing-function, w skrócie animation albo dla pojedynczej klatki kluczowej. W złożonym, wieloetapowym ruchu możesz ustawić inny easing między każdą parą klatek kluczowych.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ