0Pricing
HTML Academy · Lekcja

Animowanie SVG za pomocą CSS i SMIL

Dodawanie ruchu do elementów SVG za pomocą przejść CSS i SMIL

Animowanie SVG za pomocą CSS i SMIL to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 4 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 HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Przejścia CSS w SVG

Atrybuty prezentacyjne SVG (fill, stroke, opacity, transform) można animować za pomocą przejść CSS. Dodaj klasę i zdefiniuj przejście: .icon { transition: fill 200ms ease; } .icon:hover { fill: red; }. Przejścia CSS działają na elementach SVG tak samo jak na elementach HTML.

Animacje klatek kluczowych CSS w SVG

Do elementów SVG można stosować @keyframes: animate stroke-dashoffset, aby uzyskać efekt rysowania ścieżki, opacity, aby uzyskać płynne pojawianie się, oraz transform, aby uzyskać ruch i obrót. Ta sama składnia animacji, która jest używana dla elementów HTML, działa na elementach SVG bez modyfikacji.

@keyframes draw {
  from { stroke-dashoffset: 100; }
  to { stroke-dashoffset: 0; }
}
.path { stroke-dasharray: 100; animation: draw 1s ease forwards; }

Efekt rysowania ścieżki

Technika stroke-dasharray i stroke-dashoffset symuluje rysowanie ścieżki: ustaw dasharray na długość ścieżki, ustaw dashoffset na długość ścieżki (ścieżka jest wtedy niewidoczna), a następnie animuj dashoffset do wartości 0. Obrys sprawia wrażenie, jakby był rysowany od początku do końca.

Pobieranie długości ścieżki

path.getTotalLength() zwraca długość ścieżki w jednostkach użytkownika SVG. Tej wartości należy użyć zarówno dla stroke-dasharray, jak i początkowego stroke-dashoffset. Dzięki temu animacja działa prawidłowo niezależnie od złożoności i długości ścieżki.

CSS transform w SVG

Nowoczesne przeglądarki obsługują CSS transform na elementach SVG. W elementach SVG transform-origin domyślnie wskazuje lewy górny róg SVG, a nie środek elementu, jak w HTML. Ustaw transform-box: fill-box, aby transform-origin odnosił się do obwiedni elementu.

.spinner {
  transform-box: fill-box;
  transform-origin: center;
  animation: rotate 1s linear infinite;
}

Animacje SMIL

SMIL (Synchronized Multimedia Integration Language) to wbudowany system animacji SVG. Element animate zmienia wartości atrybutów w czasie. SMIL nie wymaga JavaScriptu ani CSS — animacje są w pełni deklaratywne i zapisane w znacznikach SVG.

<circle r="20">
  <animate attributeName="r" from="20" to="40" dur="1s" repeatCount="indefinite"/>
</circle>

animateTransform

<animateTransform attributeName="transform" type="rotate" from="0 50 50" to="360 50 50" dur="2s" repeatCount="indefinite"> obraca element wokół określonego punktu środkowego za pomocą składni SMIL.

animateMotion

<animateMotion> przesuwa element wzdłuż ścieżki SVG. Ścieżkę można wskazać za pomocą mpath lub podać jej dane bezpośrednio. Element automatycznie podąża po krzywej ścieżki — jest to przydatne przy złożonych torach ruchu, gdy ręczne obliczanie współrzędnych byłoby uciążliwe.

CSS a SMIL — kompromisy

Animacje CSS są obsługiwane we wszystkich nowoczesnych przeglądarkach, są zintegrowane z kaskadą CSS i łatwiejsze do kontrolowania za pomocą JavaScriptu (wstrzymywanie, odwracanie). SMIL jest samodzielnie zapisany w znacznikach SVG, działa w statycznych plikach SVG bez dostępu do CSS oraz zapewnia deklaratywną i wyrazistą składnię animacji podążającej po ścieżce.

Interpolacja ścieżek SVG

Animowanie między dwoma kształtami ścieżek wymaga, aby ścieżki miały taką samą liczbę poleceń i zgodną strukturę. Animacja CSS animuje właściwość d (Chrome 88+, Firefox 72+): @keyframes { to { d: path("M...") } } umożliwia natywną interpolację ścieżek za pomocą CSS.

Dostępność animacji SVG

Dodaj zapytanie medialne prefers-reduced-motion, aby wyłączać lub upraszczać animacje SVG dla użytkowników, którym ruch sprawia dyskomfort. Animacje dekoracyjne należy całkowicie wyłączać, a animacje znaczące (takie jak stany ładowania) upraszczać zamiast zatrzymywać.

Sprawdzenie wiedzy

W jaki sposób technika stroke-dasharray i stroke-dashoffset tworzy animację rysowania ścieżki?

Podsumowanie

Animacje SVG wykorzystują przejścia CSS i klatki kluczowe do uzyskiwania efektów opartych na właściwościach, technikę stroke-dasharray/dashoffset do rysowania ścieżek, a elementy SMIL animate/animateTransform/animateMotion do deklaratywnych animacji zapisanych w SVG oraz prefers-reduced-motion na potrzeby dostępności. CSS i SMIL wzajemnie się uzupełniają — należy wybrać rozwiązanie zależnie od tego, czy SVG wymaga integracji z kaskadą CSS, czy możliwości działania jako samodzielny plik.

Często zadawane pytania

Czy lekcja „Animowanie SVG za pomocą CSS i SMIL” jest bezpłatna?

Tak — pełny tekst „Animowanie SVG za pomocą CSS i SMIL” 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 HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Animowanie SVG za pomocą CSS i SMIL”?

Dodawanie ruchu do elementów SVG za pomocą przejść CSS i SMIL Ćwiczysz HTML 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ąć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML 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 4 z 4.

Ile czasu zajmuje lekcja „Animowanie SVG za pomocą CSS i SMIL”?

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 HTML Academy?

Tak. Każda lekcja HTML 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. Wbudowany SVG a img i object
  2. Podstawowe kształty SVG — rect, circle i path
  3. SVG viewBox i skalowanie responsywne
  4. Animowanie SVG za pomocą CSS i SMIL
← Powrót do HTML Academy