Scalable Vector Graphics (SVG) jsou více než jen soubory obrázků. Jako XML aplikace obsahují SVG značky, které vypadají a fungují podobně jako HTML. Můžete je také použít ve spojení s kódem CSS a JavaScript. To umožňuje animovat soubory SVG a vytvářet složité obrázky, které dobře fungují pro webdesign a další dynamická prostředí.

Jak ale udělat SVG animaci? Začněte s tvarem SVG, animujte jej pomocí CSS a stavte na těchto principech, abyste mohli používat animaci ve své vlastní práci.

Animace SVG pomocí HTML a CSS

Ačkoli můžete použít JavaScript k programové animaci SVG, CSS nyní má dobrou podporu i pro animace. Celý ukázkový kód najdete na CodePen pro tento projekt.

Vytvoření obrázku SVG uvnitř HTML

Prvním krokem v tomto procesu je vytvoření obrazu SVG, se kterým budete pracovat. Označení SVG najdete na panelu HTML na CodePen.

Struktura SVG

Zatímco SVG sdílejí podobný formát jako HTML, značky, které používáte k jejich vytvoření, se liší. SVG má otevírací a uzavírací značky (), které mohou obsahovat řadu různých vlastností. V našem případě používáme

instagram viewer
id a viewBox vlastnosti. Vlastnost id funguje jako jakékoli jiné HTML ID a poskytuje vám jedinečný identifikátor, který můžete použít ve svém CSS/JS. Vlastnost viewBox nastavuje velikost našeho SVG.

<!-- SVG s responzivní velikostí -->

<svg id="MUOSVGAanimace" viewBox="0 0 800 600">
<!-- Obsah SVG -->
</svg>

Místo toho můžete použít vlastnosti width a height, jak ukazuje následující příklad. ViewBox však vytváří responzivní SVG, které bude odpovídat velikosti výřezu, aniž by došlo k porušení jeho poměru stran.

 SVG s statickou velikostí 

<svg id="MUOSVGAanimace" šířka="800" výška ="600">
<!-- Obsah SVG -->
</svg>

Tvary SVG

Pomocí SVG můžete vytvářet detailní obrázky s řadou různých tvarových nástrojů, které máte k dispozici. Tento příklad SVG používá tři dostupné tvary, ale existuje mnoho dalších. Každý z tvarů v tomto příkladu má jedinečné ID, které mohou animace CSS použít později.

  • SVG Elipsa: Toto je kruhový/oválný nástroj. Určuje vlastnosti pro poloměr osy y/x (rx/ry), barvu výplně a šířku tahu. Je důležité si pamatovat, že poloměr, který zvolíte pomocí tohoto nástroje, bude poloviční než průměr tvaru.
<elipsa id="kruh" rx="100" ry="100" vyplnit="#ffed00" šířka tahu="0"/>
  • Obdélník SVG: Nástroj Obdélník SVG vytvoří čtverec nebo obdélník. Tento má vlastnosti pro šířku/výšku, transformaci, barvu výplně a šířku tahu.
<Rect id="náměstí" šířka="200" výška ="200" transformovat ="přeložit (300 200)" vyplnit="#05f"
šířka tahu="0"/>
  • Polygon SVG: Pomocí mnohoúhelníku SVG nastavte určitý počet bodů a vytvořte libovolné tvary různých velikostí. Mnohoúhelník v příkladu je třístranný, což z něj dělá trojúhelník, a polohu každého bodu můžete vidět zakreslenou v jeho vlastnostech. Spolu s tím máme vlastnosti pro polohu, barvu výplně a šířku tahu trojúhelníku.
<id polygonu="trojúhelník" body ="15,-97 115,102 -84,102 15,-97"
transformovat ="přeložit (0,0)" vyplnit="#f00" šířka tahu="0"/>

Jakmile je animace na místě, tvary se seřadí vedle sebe.

Tyto tři tvary SVG jsou jedny z nejběžnějších, ale je jich více, ze kterých si můžete vybrat. Následující tvary můžete použít, když práce s SVG animací:

  • Kruh SVG: Tento tvar je podobný elipse, ale má vždy stejné poloměry X a Y.
  • Čára SVG: Čára SVG je jeden úsečka se dvěma body, po jednom na každém konci.
  • SVG Polyline: Lomené čáry jsou jako základní čáry, pouze mohou mít více než dva body.
  • Polygon SVG: Polygony SVG jsou jako obdélníky, pouze mohou mít více než čtyři body, což umožňuje složité tvary.
  • Cesta SVG: Cesty SVG fungují podobně jako nástroj pero v Adobe Photoshopu. Čáry se mohou spojovat jako křivka/mnohoúhelník, ale mohou na ně být aplikovány křivky.

Jak animovat SVG pomocí CSS

Nyní, když máte ve svém SVG nějaké tvary, je čas přejít k animaci CSS. Každý z tvarů má jinou animaci, která demonstruje některé z možností, které máte, ale existuje spousta dalších, které můžete prozkoumat pomocí vlastních návrhů. Kruh se pohybuje po obrazovce, rohy čtverce se zakulacují a trojúhelník se otáčí. Všechny tyto použití CSS klíčové snímky pro vytvoření plynulých animací.

Přesouvání kruhu pomocí transformace a překladu

Kruh v příkladu SVG se během cyklu animace pohybuje zespodu do horní části obrazovky. Než se bude moci pohybovat, musíte ke kruhu přiřadit animaci prostřednictvím vlastnosti CSS:

#kruh {
animace: circle_anim 2000 ms lineárně nekonečně normální dopředu
}

První slovo v hodnotě, circle_anim, je název pro animaci. Běží dvě sekundy (2000 ms). Má to lineární křivka, která udržuje svou rychlost konzistentní a je nastavena na běh an nekonečný kolikrát v vpřed směr. Pomocí klíčových snímků můžete definovat jednotlivé fáze animace:

@klíčové snímky circle_anim {
0% { přeměnit: přeložit(155 pixelů, 305 pixelů) }
45% { přeměnit: přeložit(155 pixelů, -123 pixelů) }
50% { přeměnit: přeložit(-123 pixelů, -123 pixelů) }
55% { přeměnit: přeložit(-123 pixelů, 728 pixelů) }
60% { přeměnit: přeložit(155 pixelů, 728 pixelů) }
100% { přeměnit: přeložit(155 pixelů, 305 pixelů) }
}

V této animaci je šest klíčových snímků, takže se kruh v každém cyklu přesune na šest různých míst. The transformovat: překládat vlastnost nastavuje polohu kruhu v každé fázi. Při 0 % je kruh uprostřed obrazovky a posune se nahoru a mimo zorné pole o 45 %. O 50 % se posunul doleva na obrazovce a poté se posunul dolů pod výřez na 55 %. Kruh se přesune zpět do vodorovné polohy o 60 % a animace je dokončena na 100 % s kruhem zpět uprostřed obrazovky.

Animujte vlastnost Border Radius na náměstí

Čtverec v příkladu nabízí dobrou referenci pro obecné animace vlastností. Pokud znáte správnou syntaxi, kterou chcete použít, můžete animovat libovolnou vlastnost CSS. Vlastnost border-radius je toho dobrým příkladem. Čtverec má ostré rohy, které se změní na zaoblené rohy a pak zase zpět na hranaté rohy.

#náměstí { animace: square_anim 2000 ms plynulý náběh nekonečně normální vpřed }

Čtvercová animace se nazývá square_anim a má dvousekundový běh. The easy-in-out křivka zpomalí animaci na jejím začátku a konci a vytvoří plynulý efekt.

@klíčové snímky square_anim {
0% { rx: 0px; ry: 0px }
45% { rx: 40 pixelů; ry: 40 pixelů }
55% { rx: 40 pixelů; ry: 40 pixelů }
100% { rx: 0px; ry: 0px }
}

Jak můžete vidět, tato animace má čtyři klíčové snímky. Poloměr ohraničení X a Y se změní z 0 pixelů na 40 pixelů mezi 0 % a 45 %, přičemž se pozastaví na 40 pixelech až na 55 %. Poté se vrátí na 0 pixelů pro každý poloměr v době, kdy animace dosáhne 100 %.

Otočte SVG trojúhelník s transformací

Poslední animace SVG v příkladu je nejjednodušší, s trojúhelníkem rotujícím kolem svého středu. Tvar každé dvě sekundy dokončí celou otáčku a pokračuje nekonečně. Má křivku náběhu, která má za následek zpomalení animace na konci. Animace se nazývá trojúhelník_anim.

#trojúhelník { animace: trojúhelník_anim 2000 ms zmírnění nekonečného normálního pohybu vpřed }

Tato animace má dva klíčové snímky, jeden na 0 % a druhý na 100 %. Vlastnost Transform Rotation otočí trojúhelník z 0 stupňů při 0 % na 360 stupňů při 100 %, čímž se vytvoří úplné otočení.

@klíčové snímky trojúhelník_anim {
0% { přeměnit: přeložit(644 pixelů, 297 pixelů) točit se(0 stupňů) }
100% { přeměnit: přeložit(644 pixelů, 297 pixelů) točit se(360 stupňů) }
}

Jak animovat další vlastnosti

Výše uvedené tři animace jsou dobrým výchozím bodem při práci s SVG, ale pravděpodobně to budete chtít posunout dále. Pravidlo animace CSS můžete použít k úpravě téměř jakékoli hodnoty vlastnosti, kterou můžete svému SVG přiřadit. To zahrnuje základní hodnoty, jako je velikost a umístění, stejně jako pokročilejší hodnoty, jako jsou okraje, stíny a režimy prolnutí.

Ve vzácných případech, kdy CSS tuto práci nezvládne, můžete k animaci obrázků SVG použít kód JavaScript. Jakmile se budete cítit připraveni udělat další krok se svými SVG, můžete najít spoustu průvodců, které vám s tím pomohou.

Vytváření vlastních SVG animací

Ať už jste webový designér, vývojář softwaru nebo jednoduše kreativní člověk, vytváření SVG animací může být zábavné a uspokojující. Na webu můžete najít spoustu zdrojů, které vám pomohou s webovou animací, jakmile se seznámíte se základy.

10 vzorů pozadí CSS, které můžete použít na svém webu

Přečtěte si další

PodíltweetPodílE-mailem

Související témata

  • Programování
  • CSS
  • Vývoj webu
  • Webový design
  • vektorová grafika
  • Počítačová animace

O autorovi

Samuel L. Garbett (57 publikovaných článků)

Samuel je technologický spisovatel se sídlem ve Spojeném království s vášní pro vše, co je kutilství. Samuel začal podnikat v oblasti vývoje webu a 3D tisku a řadu let pracoval jako spisovatel a nabízí jedinečný pohled do světa technologií. Zaměřuje se hlavně na DIY technické projekty a nemiluje nic víc než sdílení zábavných a vzrušujících nápadů, které si můžete vyzkoušet doma. Mimo práci lze Samuela obvykle zastihnout, jak jezdí na kole, hraje počítačové videohry nebo se zoufale pokouší komunikovat se svým krabem.

Více od Samuela L. Garbett

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem