🎯 Cel ćwiczenia
Animacje webowe to potężne narzędzie do tworzenia interaktywnych i angażujących stron internetowych. W tym ćwiczeniu nauczysz się podstaw animacji CSS oraz JavaScript, aby tworzyć dynamiczne efekty wizualne.
Czego się nauczysz:
- Tworzenia prostych animacji CSS (transitions)
- Budowania złożonych animacji (@keyframes)
- Kontrolowania animacji za pomocą JavaScript
- Optymalizacji animacji pod kątem wydajności
📖 Część 1: Animacje CSS - Transitions
Czym są CSS Transitions?
Transitions pozwalają na płynne przejście pomiędzy wartościami właściwości CSS. Są idealne do prostych animacji wywoływanych przez interakcje użytkownika (hover, focus, click).
Przykład 1: Przycisk z efektem hover
HTML:
CSS:
transition określa, które właściwości mają być animowane, czas trwania animacji oraz funkcję przejścia (timing function).
🎨 Część 2: Animacje CSS - @keyframes
@keyframes pozwalają na tworzenie bardziej złożonych animacji z wieloma etapami. Możesz precyzyjnie kontrolować każdy krok animacji.
Przykład 2: Pulsująca kulka
HTML:
CSS:
animation łączy element z animacją.
⚡ Część 3: Animacje JavaScript
JavaScript daje pełną kontrolę nad animacjami, pozwalając na złożone interakcje i dynamiczne zmiany w odpowiedzi na działania użytkownika.
Przykład 3: Animowany licznik
HTML:
JavaScript:
setInterval do aktualizacji wartości co 16ms (około 60 klatek na sekundę), co daje płynną animację licznika.
✏️ ZADANIA PRAKTYCZNE
Zadanie 1: Bouncing Ball
ŁATWYCel: Stwórz animację piłki odbijającej się od dolnej krawędzi kontenera.
Wymagania:
- Użyj @keyframes do animacji ruchu w pionie
- Piłka powinna zacząć na górze i opadać w dół
- Zastosuj
timing-function: ease-indla efektu grawitacji - Animacja powinna się powtarzać w nieskończoność
Wskazówka: Użyj transform: translateY() do przesuwania piłki.
Zadanie 2: Menu rozwijane
ŚREDNICel: Stwórz animowane menu rozwijane, które pojawia się po kliknięciu przycisku.
Wymagania:
- Użyj JavaScript do przełączania klasy CSS
- Menu powinno się wysuwać z góry (translateY)
- Dodaj efekt fade-in (opacity)
- Czas trwania animacji: 0.3s
Wskazówka: Stwórz klasę .active z odpowiednimi stylami i przełączaj ją za pomocą classList.toggle().
Zadanie 3: Loading Spinner
ŚREDNICel: Stwórz animowany spinner ładowania z trzech kółek pulsujących na zmianę.
Wymagania:
- Trzy kółka obok siebie
- Każde kółko pulsuje (scale) z opóźnieniem
- Użyj
animation-delaydla efektu fali - Animacja w pętli nieskończonej
Wskazówka: Ustaw animation-delay: 0s, 0.2s, 0.4s dla kolejnych kółek.
Zadanie 4: Interaktywna Karta 3D
TRUDNYCel: Stwórz kartę, która obraca się w 3D po kliknięciu, pokazując rewers.
Wymagania:
- Użyj
transform: rotateY()dla efektu 3D - Karta ma dwie strony (przód i tył)
- Po kliknięciu karta się obraca o 180 stopni
- Zastosuj
perspectivedla efektu głębi - Dodaj
transitiondla płynnego obrotu
Wskazówka: Użyj backface-visibility: hidden; aby ukryć tylną stronę karty podczas obrotu.
💡 WSKAZÓWKI I NAJLEPSZE PRAKTYKI
1. Wydajność
- Animuj tylko właściwości
transformiopacitydla najlepszej wydajności - Unikaj animowania
width,height,top,left- wymuszają one ponowne układanie strony - Używaj
will-changedla złożonych animacji (ostrożnie!)
2. Timing Functions (Funkcje przejścia)
- ease: wolny start, szybki środek, wolny koniec (domyślna)
- ease-in: wolny start, szybkie przyspieszenie
- ease-out: szybki start, wolny koniec
- ease-in-out: wolny start i koniec
- linear: stała prędkość przez cały czas
- cubic-bezier(): własna krzywa przejścia
3. Dostępność
- Respektuj
prefers-reduced-motiondla użytkowników wrażliwych na ruch - Nie używaj zbyt szybkich lub agresywnych animacji
- Upewnij się, że animacje nie zakłócają czytelności treści
📚 DODATKOWE ZASOBY
🎉 PODSUMOWANIE
Gratulacje! Po ukończeniu tego ćwiczenia powinieneś umieć:
- ✅ Tworzyć proste animacje CSS przy użyciu transitions
- ✅ Budować złożone animacje z @keyframes
- ✅ Kontrolować animacje za pomocą JavaScript
- ✅ Optymalizować animacje pod kątem wydajności
- ✅ Tworzyć responsywne i dostępne animacje
Powodzenia w nauce! 🚀