PorównaniePorównania

transition vs animation

transition animuje zmianę między dwoma stanami po wyzwalaczu, np. :hover. animation odtwarza kroki z @keyframes samodzielnie, nawet w pętli.

Na tej stronie

Porównanie w tabeli

#
  • Potrzebuje wyzwalacza (np. :hover)

    transition
    Tak, bez zmiany stanu nic się nie dzieje
    animation
    Nie, rusza sama po przypisaniu reguły
  • Liczba kroków

    transition
    Dwa stany: początkowy i końcowy
    animation
    Dowolnie wiele, zdefiniowanych w @keyframes
  • Zapętlanie

    transition
    Niemożliwe
    animation
    Tak, przez animation-iteration-count: infinite
  • Start bez interakcji użytkownika

  • Pauza i wznowienie

    animation
    Tak, przez animation-play-state
  • Typowe użycie

    transition
    Hover na przyciskach, płynne otwieranie menu
    animation
    Spinnery, pulsowanie, wskaźniki ładowania

Przykład

#
CSS
.btn {
  background: #7c3aed;
  transition: background-color 0.2s;
}

.btn:hover {
  background: #6d28d9;
}

.spinner {
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to { rotate: 360deg; }
}
Podgląd

Definicja i zastosowanie

#

Właściwość transition potrzebuje wyzwalacza: zmiany stanu, na przykład :hover, dodania klasy przez JavaScript albo zmiany zapytania @media. Interpoluje tylko między dwoma wartościami, tą przed zmianą i tą po niej, i odtwarza się raz na każdą zmianę.

Właściwość animation opiera się na regule @keyframes, w której opisujesz dowolnie wiele kroków pod różnymi procentami czasu. Rusza sama, zaraz po przypisaniu reguły do elementu, bez żadnej interakcji użytkownika. Dzięki animation-iteration-count może się zapętlać, a animation-direction i animation-play-state dają kontrolę nad kierunkiem i pauzą.

W praktyce transition wystarcza do prostych efektów interfejsu: podświetlenia przycisku, otwarcia menu, zmiany koloru przy fokusie. animation sprawdza się tam, gdzie ruch ma się dziać sam z siebie i bez końca: spinnery ładowania, pulsujące odznaki, powitalne efekty wejścia elementów na stronę.

Składnia

#
Składnia
transition: <właściwość> <czas> <funkcja czasu>? <opóźnienie>?;
animation: <nazwa-klatek> <czas> <funkcja czasu>? <opóźnienie>? <powtórzenia>?;

Więcej przykładów

#
Animacja rusza sama, bez interakcji
CSS
@keyframes pulse {
  50% { transform: scale(1.15); }
}

.badge {
  animation: pulse 1.2s ease-in-out infinite;
}
Podgląd

Nie trzeba nic klikać ani najeżdżać kursorem: animacja startuje od razu po wczytaniu strony.

Bez zmiany stanu transition nic nie zrobi
CSS
.card {
  transform: scale(1);
  transition: transform 0.3s;
}
Podgląd

Sam transition niczego nie animuje. Potrzebuje drugiej reguły, np. :hover, która zmieni wartość transform.

Dobre praktyki

#
  • Jeśli coś ma się dziać bez udziału użytkownika i w pętli, sięgnij po animation.
  • transition jest prostszy i lżejszy do efektów hover albo fokusu na jednej, dwóch właściwościach.
  • Można je połączyć: animacja wejścia z @keyframes, a potem transition na :hover tego samego elementu.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.