Domovská » Kódování » Jak vytvořit SVG animaci pomocí CSS

    Jak vytvořit SVG animaci pomocí CSS

    Animaci SVG lze provést pomocí nativních prvků, jako je například a . Ale pro ty, kteří jsou více obeznámeni s animací CSS, a ne se bát, můžeme také použít animace CSS pro animované SVG..

    CSS animace by také mohla být alternativním způsobem použití JavaScript knihovny jako SnapSVG. V tomto příspěvku uvidíme, co můžeme dodat s CSS Animation v SVG.

    1. Vytvoření obrazců

    Nejprve budeme muset nakreslit tvary a objekty, které chceme animovat. Můžete použít aplikace jako Skica, Adobe Illustrator, nebo Inkscape vytvořit.

    Pro tento příklad jsem nakreslil jako pozadí zataženou oblohu a raketová loď, která střílela nahoru, zahrnovala plameny:

    Po dokončení s výkresem musíme exportovat každý objekt, který jsme vytvořili, do SVG.

    Jako příklad pro tento krok budu používat Sketch. Vyberte objekt, který chcete změnit do formátu SVG. V pravém dolním rohu okna klikněte Proveďte exportovatelné. Zvolte formát SVG a klepněte na příkaz Exportovat object-name. Musíte to udělat jeden objekt najednou.

    2. Vložte SVG do HTML

    Když otevřete soubor SVG v editoru kódů, zjistíte, že kódy SVG jsou poměrně chaotické. Před nasazením souboru SVG tedy kód upravíme a optimalizujeme pomocí tohoto nástroje příkazového řádku nazvaného SVGO.

    Zahájení Terminál nebo Příkazový řádek, a nainstalovat SVGO pomocí tohoto příkazového řádku:

     [sudo] npm install -g svgo 

    Přejděte na příkaz, svgo, pomocí SVG souboru --pěkný vytvořit čitelný SVG kód:

     svgo rocket.svg --pretty 

    Pokud máte v adresáři více SVG, můžete je všechny optimalizovat najednou. Za předpokladu, že adresář je pojmenován /snímky, pak z rodičovského adresáře použijte tento příkaz:

     svgo -f images --pretty 

    Podívejme se na rozdíl před a po použití SVGO.

    Zkopírujte kód do souboru SVG a vložte jej do souboru HTML. Budeme pracovat na pracovním prostoru o šířce 800px 600px, takže nezapomeňte definovat šířka na element SVG.

            

    SVG je nastaven v HTML souboru. Pro každý objekt budeme muset definovat ID, abychom je mohli později vybrat v CSS.

    Pro tento tutoriál potřebujeme definovat ID rakety a plameny a některé mraky. Aby objekty mohly zpracovat fázi animace později, musíme přidat id - můžete také použít třída - ke každému objektu. V této fázi bude kód vypadat takto:

                  

    3. Animujte pomocí CSS

    Pojďme se pobavit. Plán je posílit raketu do vesmíru. Raketa je rozdělena do dvou skupin; samotnou raketu a plamen.

    Nejprve umístíme raketu doprostřed pracovního prostoru takto:

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

    To, co vidíte, je toto:

    Aby raketa vypadala tak, že jde nahoru, musíme vytvořit iluzi padajících mraků. CSS, který používáme, je následující:

     # cloud1 animace: pád 1s lineární nekonečno;  @keyframes spadají z transform: translateY (-100px);  to transform: translateY (1000px) 

    Aby to vypadalo ještě realističtěji, pojďme oživit čtyři mraky a udělat je “podzim” při různých rychlostech. Rovněž je umístíme odlišně od osy X..

    Druhý mrak bude mít takový kód:

     # cloud2 animace: pád-2 2s lineární nekonečno;  @keyframes podzim-2 z transform: překládat (200px, -100px);  to transform: překládat (200px, 1000px) 

    Všimněte si, že jsme přesunuli cloud # 2 trochu doprava, o 200px s přeložit. V této fázi by výsledek měl vypadat takto.

    Dále nechme raketu ožít. Přidělíme klíčový snímek animace následujícím způsobem:

     #rocket animace: vyskakovací okno 1 usnadňuje nekonečno;  @keyframes popup 0% transform: přeložit (260px, 200px);  50% transformace: překlad (260px, 240px);  100% transform: translate (260px, 200px);  

    A přidejte animaci také do plamene rakety:

     #flame animation: shake .2s lineární nekonečno;  @keyframes shake 0% transformace: přeložit (55px, 135px) otočit (7deg);  20% transformace: překlad (55px, 135px) rotace (0deg);  40% transformace: překlad (55px, 135px) rotace (-7deg);  60% transformace: překlad (55px, 135px) rotace (0deg);  100% transformace: překlad (55px, 135px) rotace (0deg);  

    Že jo! Nyní, když jsou všechny naše kódy nastaveny, by animace měla fungovat na našem SVG.

    Podívejte se na raketové tryskání do vesmíru.

    Závěrečná myšlenka

    Animace není nejjednodušší funkcí v CSS k pochopení. Doufejme však, že tento návod najdete jako dobrý výchozí bod k dalšímu prozkoumání CSS animace na SVG; budete překvapeni, co se dá s CSS animací dosáhnout.

    Pokud chcete začít se základy, můžete začít zde s tímto příspěvkem: Pohled do: Škálovatelná vektorová grafika (SVG) Animace nebo sledovat zbytek série SVG.

    • Zobrazit ukázku
    • Stáhněte si zdroj