Начална » кодиране на стоките » Как да създадем SVG анимация с помощта на CSS

    Как да създадем SVG анимация с помощта на CSS

    Анимацията на SVG може да се осъществи чрез родни елементи като и . Но за тези, които са по-запознати с CSS анимацията, да не се притесняваме, можем също така да използваме свойствата на CSS анимация и за анимираните SVG-та..

    CSS Animation може също да бъде алтернативен начин за използване на JavaScript библиотека като SnapSVG. В този пост ще видим какво можем да предоставим с CSS Animation в SVG.

    1. Създаване на фигури

    Първо, ще трябва да нарисуваме форми и обекти, които искаме да анимираме. Можете да използвате подобни приложения Скица, Adobe Illustrator, или Inkscape да създадете такъв.

    За този пример нарисувах облачно небе като фон, а ракетен кораб, стрелящ нагоре, включваше пламъци:

    Веднъж направено с чертежа, трябва да експортираме всеки обект, който сме създали в SVG.

    Ще използвам Sketch като пример за тази стъпка. Изберете обекта, който искате да превърнете в SVG формат. В долния десен ъгъл на прозореца кликнете върху Направете експортиране. Изберете SVG формат, след което кликнете върху Export object-name. Трябва да направите този обект едновременно.

    2. Поставете SVG в HTML

    Когато отворите SVG файла в редактор на код, ще откриете, че SVG кодовете са доста разхвърляни. Следователно, преди да разположим SVG файла, нека подреждаме кода и да го оптимизираме с инструмента за командния ред, наречен SVGO.

    хвърлям терминал или Командния ред, и инсталирайте SVGO с този команден ред:

     [sudo] npm install -g svgo 

    Настройте командата, svgo, на SVG файла --красива за създаване на четим SVG код:

     svgo rocket.svg - точен 

    Ако имате няколко SVG в директория, можете да ги оптимизирате заедно заедно. Ако приемем, че директорията е кръстена / изображения, след това от родителската директория използвайте тази команда:

     svgo -f images - точно 

    Да видим разликата преди и след използването на SVGO.

    Копирайте кода в SVG файла и го поставете в HTML файл. Ще работим върху работно пространство с ширина 800 пиксела с 600 пиксела, така че да не забравяме да дефинираме широчина в SVG елемента.

            

    SVG се задава в HTML файла. Ще трябва да дефинираме идентификатор за всеки обект, за да можем да ги изберем по-късно в CSS.

    За този урок трябва да дефинираме идентификацията на ракетата и пламъците, както и някои от облаците. За да могат обектите да се справят с анимационния етап по-късно, трябва да добавим документ за самоличност - можете също да използвате клас - към всеки обект. На този етап кодът ще изглежда така:

                  

    3. Анимирайте използвайки CSS

    Сега да се позабавляваме. Планът е да се засили ракетата в космоса. Ракетата е разделена на две групи; самата ракета и пламъкът.

    Първо, позиционираме ракетата в средата на работното пространство, както следва:

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

    Това, което виждате, е следното:

    Сега, за да изглежда ракетата да изглежда така, сякаш върви нагоре, трябва да създадем илюзията за падане на облаците. CSS, която използваме за това, е:

     # cloud1 анимация: пада 1s линейно безкрайно;  @keyframes попадат от transform: translateY (-100px);  до transform: translateY (1000px) 

    За да изглежда по-реалистично, нека анимираме четири облака и да ги направим “падане” при различни скорости. Ще ги позиционираме различно от оста Х.

    Вторият облак ще има код като този:

     # cloud2 анимация: падане-2 2s линейно безкрайно;  @keyframes fall-2 от transform: translate (200px, -100px));  до transform: translate (200px, 1000px) 

    Имайте предвид, че сме преместили облака # 2 малко надясно, с 200px с превеждам. На този етап резултатът трябва да изглежда така.

    След това нека да накараме ракетата да оживее. Ще присвоим анимационен ключов кадър, както следва:

     #rocket анимация: изскачащи 1с улеснява безкрайността;  @keyframes popup 0% transform: translate (260px, 200px));  50% transform: translate (260px, 240px);  100% transform: translate (260px, 200px);  

    И добавете анимация и към ракетния пламък:

     #flame анимация: разклатете .2s линейно безкрайно;  @keyframes разклащане 0% transform: translate (55px, 135px)) завъртане (7deg);  20% transform: translate (55px, 135px) завъртане (0deg);  40% transform: translate (55px, 135px) rotate (-7deg);  60% transform: translate (55px, 135px) завъртане (0deg);  100% transform: translate (55px, 135px) завъртане (0deg);  

    Точно така! Сега, когато нашите кодове са готови, анимацията трябва да работи на нашия SVG.

    Обърнете внимание на взривяването ни в космоса.

    Заключителна мисъл

    Анимацията не е най-лесната функция в CSS да се разбере. Но се надяваме, че този урок ще бъде добра отправна точка за по-нататъшно проучване на CSS Animation на SVG; ще бъдете изненадани да знаете какво може да бъде постигнато с поддръжката на CSS Animation.

    Ако искате да започнете с най-важните неща, можете да започнете с тази публикация: A Look Into: Scalable Vector Graphics (SVG) Анимация или следвайте останалата част от SVG серията.

    • Преглед на демо
    • Изтеглете Източник