Główna » Kodowanie » Jak utworzyć animację SVG przy użyciu CSS

    Jak utworzyć animację SVG przy użyciu CSS

    Animowanie SVG można wykonać za pomocą rodzimych elementów, takich jak i . Ale dla tych, którzy są bardziej zaznajomieni z animacją CSS, nie martw się, możemy również użyć właściwości animacji CSS również do animowanych SVG.

    Animacja CSS może być również alternatywnym sposobem korzystania z biblioteki JavaScript, takiej jak SnapSVG. W tym poście zobaczymy, co możemy dostarczyć za pomocą animacji CSS w SVG.

    1. Tworzenie kształtów

    Przede wszystkim musimy narysować kształty i obiekty, które chcemy animować. Możesz używać aplikacji takich jak Naszkicować, Adobe Illustrator, lub Inkscape stworzyć jeden.

    W tym przykładzie narysowałem pochmurne niebo jako tło, a statek rakietowy strzelający w górę, w tym płomienie:

    Po zakończeniu rysowania musimy wyeksportować każdy utworzony przez nas obiekt do SVG.

    Zamierzam użyć Sketch jako przykładu dla tego kroku. Wybierz obiekt, który chcesz przekształcić w format SVG. W prawym dolnym rogu okna kliknij Dodać do eksportu. Wybierz format SVG, a następnie kliknij Eksportuj nazwa-obiektu. Musisz robić jeden obiekt naraz.

    2. Włóż SVG do HTML

    Gdy otworzysz plik SVG w edytorze kodu, przekonasz się, że kody SVG są dość niechlujne. Dlatego przed wdrożeniem pliku SVG uporządkujmy kod i zoptymalizujmy go za pomocą tego narzędzia wiersza poleceń o nazwie SVGO.

    Uruchomić Terminal lub Wiersz polecenia, i zainstaluj SVGO za pomocą tej linii poleceń:

     [sudo] npm install -g svgo 

    Tun polecenie, svgo, przy użyciu pliku SVG --ładny stworzyć czytelny kod SVG:

     svgo rocket.svg --pretty 

    Jeśli w katalogu znajduje się wiele plików SVG, możesz je zoptymalizować jednocześnie. Zakładając, że katalog ma nazwę /obrazy, następnie z katalogu nadrzędnego użyj tego polecenia:

     svgo -f images --pretty 

    Zobaczmy różnicę przed i po użyciu SVGO.

    Skopiuj kod z pliku SVG i wklej do pliku HTML. Będziemy pracować na obszarze roboczym o szerokości 800 x 600 pikseli, więc nie zapomnijmy zdefiniować szerokość na elemencie SVG.

            

    SVG jest ustawiony w pliku HTML. Będziemy musieli zdefiniować ID dla każdego obiektu, abyśmy mogli wybrać je później w CSS.

    W tym samouczku musimy zdefiniować identyfikator rakiety i płomieni oraz niektóre chmury. Aby obiekty mogły obsługiwać scenę animacji później, musimy dodać ID - możesz także użyć klasa - do każdego obiektu. Na tym etapie kod będzie wyglądał następująco:

                  

    3. Animuj za pomocą CSS

    Teraz zabawmy się. Plan polega na zwiększeniu rakiety w kosmos. Rakieta jest podzielona na dwie grupy; sama rakieta i płomień.

    Przede wszystkim ustawiamy rakietę w środku obszaru roboczego, w następujący sposób:

     #rocket transform: translate (260px, 200px); 

    Widzisz to:

    Teraz, aby rakieta wyglądała tak, jakby szła w górę, musimy stworzyć iluzję spadających chmur. CSS, którego używamy to:

     # cloud1 animacja: spadek 1s liniowy nieskończony;  @keyframes fall from transform: translateY (-100px);  to transform: translateY (1000px) 

    Aby wyglądał jeszcze bardziej realistycznie, animujmy cztery chmury i stwórzmy je “spadek” przy różnych prędkościach. Ustawimy je także inaczej niż na osi X..

    Druga chmura będzie miała taki kod:

     # cloud2 animacja: fall-2 2s linear infinite;  @keyframes fall-2 from transform: translate (200px, -100px);  to transform: translate (200px, 1000px) 

    Zauważ, że przesunęliśmy chmurę # 2 nieco w prawo, przez 200px z Tłumaczyć. Na tym etapie wynik powinien wyglądać następująco.

    Następnie spraw, by rakieta ożyła. Przydzielimy klatkę kluczową animacji w następujący sposób:

     #rocket animation: popup 1s ułatwiają nieskończoność;  @keyframes popup 0% transform: translate (260px, 200px);  50% transform: translate (260px, 240px);  100% transform: translate (260px, 200px);  

    I dodaj animację do płomienia rakiety:

     #flame animation: shake .2s linear infinite;  @keyframes shake 0% transform: translate (55px, 135px) rotate (7deg);  20% transform: translate (55px, 135px) rotate (0deg);  40% transform: translate (55px, 135px) rotate (-7deg);  60% transform: translate (55px, 135px) rotate (0deg);  100% transform: translate (55px, 135px) rotate (0deg);  

    Dobrze! Teraz, kiedy nasze kody są już ustawione, animacja powinna działać na naszym SVG.

    Spójrz na naszą rakietę wystrzeliwującą w kosmos.

    Końcowa myśl

    Animacja nie jest najłatwiejszą do zrozumienia funkcją w CSS. Ale miejmy nadzieję, że ten samouczek będzie dobrym punktem wyjścia do dalszej eksploracji animacji CSS na SVG; zdziwiłbyś się, wiedząc, co można osiągnąć dzięki dostępnej animacji CSS.

    Jeśli chcesz zacząć od samych podstaw, możesz zacząć od tego posta: Animacja Look In: ​​Scalable Vector Graphics (SVG) lub podążaj za resztą serii SVG.

    • Wyświetl demo
    • Pobierz źródło