0Pricing
React Academy · Lekcja

Animacje CSS z użyciem keyframes w React

Proszę dynamicznie stosować i usuwać animacje @keyframes na podstawie stanu komponentu i zdarzeń.

Animacje CSS z użyciem keyframes w React to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Definiowanie @keyframes

Reguła @keyframes opisuje wieloetapową animację, określając wartości właściwości w punktach osi czasu za pomocą from/to lub wartości procentowych, takich jak 0%, 50% i 100%.

W przeciwieństwie do przejść klatki kluczowe mogą opisywać złożony, wieloetapowy ruch, który działa samodzielnie, bez zmiany stanu na każdym etapie.

Skrócona składnia animation

Zestaw klatek kluczowych stosuje się za pomocą właściwości animation: animation: slideIn 400ms ease forwards. Łączy ona nazwę, czas trwania, funkcję czasową i tryb wypełnienia.

Tryb wypełnienia forwards zachowuje wartości elementu z ostatniej klatki kluczowej po zakończeniu animacji, zapobiegając nagłemu powrotowi do stanu początkowego.

Stosowanie klasy animacji za pomocą stanu

W React zazwyczaj dodaje się klasę zawierającą deklarację animation, gdy stan przyjmuje wartość true. Na przykład dodanie is-entering uruchamia klatki kluczowe w chwili zamontowania elementu lub zmiany wartości flagi.

Dzięki temu logika animacji pozostaje w CSS, a React jedynie decyduje, kiedy dołączyć klasę.

animation-fill-mode

animation-fill-mode określa, jakie style obowiązują przed rozpoczęciem animacji i po jej zakończeniu. forwards zachowuje ostatnią klatkę kluczową, backwards stosuje pierwszą klatkę kluczową podczas ewentualnego opóźnienia, a both robi jedno i drugie.

Bez forwards element animujący się do stanu pełnej widoczności powróciłby do niewidoczności po zakończeniu animacji.

animation-direction alternate

animation-direction: alternate odtwarza animację do przodu, a następnie do tyłu przy każdym powtórzeniu. W połączeniu z animation-iteration-count: infinite tworzy płynny ruch tam i z powrotem, przypominający pulsowanie lub oddychanie.

Jest to przydatne w przypadku wskaźników ładowania lub subtelnych animacji przyciągających uwagę.

Wstrzymywanie za pomocą animation-play-state

animation-play-state może przyjmować wartość running lub paused. Można sterować nim na podstawie stanu Reacta, na przykład wstrzymywać przewijany tekst po najechaniu, przełączając klasę.

Ponieważ animacja zostaje wstrzymana, a nie zresetowana, wznawia się dokładnie od miejsca, w którym się zatrzymała.

Ponowne uruchamianie przez zmianę właściwości key

Animacja klatkowa odtwarza się tylko raz, gdy jej klasa zostanie zastosowana po raz pierwszy; ponowne dodanie tej samej klasy jej nie uruchomi. Najprostszym rozwiązaniem w React jest zmiana właściwości key elementu, aby React zamontował nowy węzeł i odtworzył animację od początku.

Na przykład key={count} na powiadomieniu typu toast powoduje jego ponowne zamontowanie za każdym razem, gdy wartość count wzrośnie.

Uwzględnianie prefers-reduced-motion

Niektórzy użytkownicy włączają ograniczenie ruchu w systemie operacyjnym ze względów komfortu lub dostępności. Animacje nieistotne dla działania interfejsu należy umieścić w @media (prefers-reduced-motion: reduce) i tam je wyłączyć lub skrócić.

Respektowanie tego ustawienia sprawia, że interfejs jest bardziej dostępny i nie powoduje dyskomfortu.

Uruchamianie podczas przewijania za pomocą IntersectionObserver

Aby animować elementy w momencie, gdy pojawiają się w obszarze widocznym, należy użyć IntersectionObserver w useEffect. Gdy obserwowany element stanie się widoczny, aktualizuje się stan, co dodaje klasę animacji.

W ten sposób można uzyskać efekty pojawiania się podczas przewijania bez obciążających nasłuchiwaczy przewijania uruchamianych przy każdej klatce.

Koordynowanie za pomocą animation-delay

animation-delay określa, kiedy rozpoczyna się każda animacja klatkowa, dzięki czemu można je rozłożyć w czasie. Nadanie elementom listy coraz większych opóźnień sprawia, że animują się po kolei, tworząc zaplanowany efekt pojawiania się.

Opóźnienie dla każdego elementu można obliczyć w React za pomocą style={{ animationDelay: i * 80 + 'ms' }}.

Klatki kluczowe a przejścia

Przejść należy używać do prostych zmian między dwoma stanami wywoływanych interakcją, a klatek kluczowych wtedy, gdy potrzebny jest ruch składający się z wielu etapów, zapętlenie lub animacja działająca niezależnie od przełączania stanu.

Oba rozwiązania są oparte wyłącznie na CSS, więc React decyduje tylko o tym, kiedy dołączyć klasy, a przeglądarka obsługuje poszczególne klatki.

Szybki test

Sprawdź swoją wiedzę na temat działania animacji klatkowych.

Podsumowanie

Dowiedział się Pan, jak definiować @keyframes, stosować je za pomocą skróconej właściwości animation, sterować trybem wypełnienia i kierunkiem, wstrzymywać animacje i uruchamiać je ponownie, a także pokazywać elementy podczas przewijania za pomocą IntersectionObserver.

Poznał Pan również sposób respektowania prefers-reduced-motion na potrzeby dostępnych animacji.

Często zadawane pytania

Czy lekcja „Animacje CSS z użyciem keyframes w React” jest bezpłatna?

Tak — pełny tekst „Animacje CSS z użyciem keyframes w React” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Animacje CSS z użyciem keyframes w React”?

Proszę dynamicznie stosować i usuwać animacje @keyframes na podstawie stanu komponentu i zdarzeń. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Animacje CSS z użyciem keyframes w React”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Przejścia CSS przy zmianach stanu React
  2. Animacje CSS z użyciem keyframes w React
  3. useLayoutEffect do pomiarów przed animacją
  4. Animacje wejścia i wyjścia bez biblioteki
← Powrót do React Academy