Домашняя » кодирование » Как создать SVG-анимацию с помощью CSS

    Как создать SVG-анимацию с помощью CSS

    Анимация SVG может быть выполнена через нативные элементы, такие как а также . Но для тех, кто более знаком с CSS-анимацией, чтобы не волноваться, мы также можем использовать свойства CSS-анимации для анимированных SVG..

    CSS-анимация также может быть альтернативным способом использования библиотеки 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 --pretty 

    Если у вас есть несколько SVG в каталоге, вы можете оптимизировать их все вместе, сразу. Предполагая, что каталог назван /изображений, затем из родительского каталога используйте эту команду:

     svgo -f images --pretty 

    Посмотрим разницу до и после использования SVGO.

    Скопируйте код в файл SVG и вставьте в файл HTML. Мы будем работать над рабочей областью шириной 800 на 600 пикселей, поэтому давайте не забудем определить ширина на элементе SVG.

            

    SVG устанавливается в файле HTML. Нам нужно будет определить идентификатор для каждого объекта, чтобы мы могли выбрать их в CSS позже.

    Для этого урока нам нужно определить идентификатор ракеты, пламени и некоторых облаков. Чтобы объекты могли обрабатывать этап анимации позже, нам нужно добавить Я бы - Вы также можете использовать учебный класс - к каждому объекту. На этом этапе код будет выглядеть так:

                  

    3. Анимировать с помощью CSS

    Теперь давайте повеселимся. План состоит в том, чтобы запустить ракету в космос. Ракета разделена на две группы; сама ракета и пламя.

    Прежде всего, мы позиционируем ракету в середине рабочего пространства следующим образом:

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

    Что вы видите, это:

    Теперь, чтобы ракета выглядела так, как будто она движется вверх, нам нужно создать иллюзию падающих облаков. CSS, который мы используем для этого:

     # cloud1 animation: fall 1s линейный бесконечный;  @keyframes fall from transform: translateY (-100px);  to transform: translateY (1000px) 

    Чтобы это выглядело еще более реалистично, давайте анимируем четыре облака и сделаем их “падать” на разных скоростях. Мы также разместим их по-другому от оси X.

    Второе облако будет иметь такой код:

     # cloud2 animation: fall-2 2s линейный бесконечный;  @keyframes fall-2 from transform: translate (200px, -100px);  to transform: translate (200px, 1000px) 

    Обратите внимание, что мы переместили облако # 2 немного вправо 200px с переведите. На этом этапе результат должен выглядеть следующим образом.

    Далее давайте заставим ракету ожить. Мы назначим ключевой кадр анимации следующим образом:

     #rocket animation: popup 1s облегчить бесконечность;  @keyframes popup 0% transform: translate (260px, 200px);  50% transform: translate (260px, 240px);  100% transform: translate (260px, 200px);  

    И добавьте анимацию к пламени ракеты:

     #flame animation: shake .2s линейный бесконечный;  @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);  

    Правильно! Теперь, когда все наши коды установлены, анимация должна работать на нашем SVG..

    Взгляните на нашу ракету, летящую в космос.

    Последняя мысль

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

    Если вы хотите начать с самых основ, вы можете начать здесь с этого поста: A Look Into: Scalable Vector Graphics (SVG) Animation или следуйте остальной части серии SVG.

    • Посмотреть демо
    • Скачать исходный код