Як анімувати SVG для Інтернету?


12

Векторна графіка зараз переймає Інтернет та навіть мобільні додатки. Піктограми, кнопки та елементи веб-сторінок або мобільних додатків тепер набувають все більшу векторність, відкидаючи растрові зображення через необхідність відображення у всіх видах роздільної здатності екрана, dpi, співвідношеннях тощо, і тому, що корисна здатність "збільшувати" масштаб краще читати сторінки в мобільних браузерах зробили активи растрових зображень вже неприємними та непридатними.

Тож саме час почати створювати анімовані значки, фони та елементи управління у SVG, але як анімувати файли SVG?


1
Ваше запитання дуже широке і може давати відповіді на основі думки, які не найкраще підходять для GDSE. Перегляньте нашу допомогу, щоб побачити, як найкраще задавати / відповідати на питання. Також "кращий" завжди дуже суб'єктивний і контекстно-залежний, коли мова йде про інструменти та процеси.
bemdesign

Якщо ви хочете дізнатися про SVG-анімацію для використання в Інтернеті, можливо, вам варто впорядкувати своє питання і задати його на сайті stackoverflow.com .
Лучано

Це дуже важливе і часто відповідне запитання. Додайте свої відповіді, якщо ви знаєте інші інструменти або бібліотеки для анімації svg. Дякую.
Емануеле Сабетта

4
Проблема, яку я маю з цим питанням, це те, чи можна вважати питання збору ресурсів на основі запиту інструментів. Я не проти питання, чи можемо ми зосередитись на тому, що ми повинні насправді обговорювати, виконанні SVG-анімації. Я відредагував ваше запитання, щоб краще зупинитися на його застосуванні.
DᴀʀᴛʜVᴀᴅᴇʀ

@EmanueleSabetta Якщо ви отримали відповідь на своє запитання, позначте одну з відповідей як прийняту відповідь нижче.
DᴀʀᴛʜVᴀᴅᴇʀ

Відповіді:


18

Багато цієї відповіді також розміщено в цьому пов'язаному питанні про те, як оживити ілюстрації для Інтернету.


Уникайте SMIL-анімації

Сара Суейдан, мабуть, найкращий аніматор SVG в Інтернеті, написала "Я знаю, що я написала керівництво по SMIL-анімації, але, бачачи їхнє майбутнє, я особисто не використовую їх більше". Ви не повинні жодного з них.

Анімації SMIL не працюють у будь-якому IE, Edge, деяких мобільних браузерах і поступово відміняються Chrome / Opera (хоча останнім часом команда Chrome заявила, що ця депресія тимчасово призупинена ). Вам слід уникати використання їх 99% часу.

Використовуйте CSS для дуже простих анімацій

SVG можна значною мірою анімувати за допомогою чистого CSS (включаючи використання :hoverстанів, transforms, transitions та animations). Це планується отримати повну підтримку CSS анімації , але в даний час тільки деякі з них підтримується і може бути баггі з проблемами кросу браузера.

Сара Суейдан каже, що CSS чудово підходить для анімації SVG, але віддає перевагу JS, оскільки допомагає вирішити ці проблеми між веб-переглядачами. Таким чином, використовуйте його тоді, коли ви можете, але повернетесь до JS, коли анімації є складнішими або не працюють крос-браузер.

Використовуйте анімації JavaScript, якщо CSS не працюватиме

Більшу частину часу SVG можна анімувати за допомогою трохи JavaScript без необхідності бібліотеки анімації JavaScript. Анімація в JS має набагато більше крос-браузерну підтримку і досить проста у використанні з деяким базовим розумінням.

Для складної анімації, яка вимагає використання часової шкали або чогось подібного, використання бібліотеки типу GSAP може бути дуже корисним. Існує незліченна кількість інших бібліотек SVG-анімацій, Snap.svg - ще одна велика, але більшість не справляється з анімацією майже так просто або настільки ефективно, як GSAP.

Для певних типів анімації використання конкретного плагіну JS, наприклад, MorphSVG GSAP, може заощадити зовсім небагато часу, оскільки вони піклуються про проблеми між браузером та всі розрахунки. Однак для більшості анімацій не потрібні такі плагіни. Докладніше див. У "Посібнику щодо альтернатив функції SMIL" .

Також прийнятно використовувати поліфіли для SMIL, але я втомився робити це, оскільки вони не дуже широко використовуються / перевіряються. З урахуванням сказаного, Ерік Віллігерс і FakeSmile - два найпоширеніші.

Інструментальне обладнання

Єдине програмне забезпечення, яке я натрапив на експорт у SVG + JS, - це плагін Adobe After Effects під назвою Lottie (раніше Bodymovin), розширення Flash під назвою Flash 2 SVG та невеликий онлайн-інструмент під назвою SVG Circus . Крім того, програмні аніматори, такі як Adobe Edge Animate, Adobe Animate CC або Animatron, експортуються в SMIL-анімації, які не слід використовувати. Таким чином, краще, щоб хтось розробник робив SVG + CSS або SVG + JS анімацію, використовуючи експортовані SVG з редактора . Inkscape має чудовий ресурс, що пов'язує навчальні посібники та приклади, як це зробити.

Я впевнений, що в майбутньому більше програмного забезпечення для анімації підтримуватиме експорт у SVG + JS.


Деякі інші важливі замітки

  • Важливо пам’ятати про продуктивність . Сара Драснер створила деякі орієнтири продуктивності для SVG, на яких показано, що слід вибирати анімацію з прискореною технікою CSS, коли це можливо, але відмовитись від хорошого підходу JavaScript, коли це неможливо.

  • SVG-файли найкраще використовувати в <object>тезі або вбудовувати безпосередньо в <svg>XML-елемент, якщо він інтерактивний і як фонове зображення, якщо він не інтерактивний, але є й інші способи це зробити .


Для більш повного перегляду веб-анімацій читайте допис Рейчел Набор у частині списку . Для деяких додаткових пропозицій щодо інструментальної роботи ця публікація дуже корисна, хоча я не згоден з усіма настроями, особливо з тим, як вона представляє SMIL-анімацію.


- SVG використовується і в мобільних додатках. Найбільший приріст SVG за останні два роки був у векторних активах користувальницького інтерфейсу. Бітові карти більше не використовуються.
Емануеле Сабетта

Крім того, наразі немає можливості створити велику анімацію за допомогою CSS. Вам потрібна SMIL для створення таких великих анімацій: tbyrne.org/portfolio/smil/LoveDota.svg
Емануеле Сабетта

Щодо вибору команди розробників Chrome для припинення підтримки SMIL, вони в самій нитці такого оголошення оголосили, що основною причиною було те, що тепер ви можете використовувати SMIL через цю поліфункцію
Emanuele Сабетта

4
Боже, я все за те, щоб виганяти пекло технологій, якщо вони смокчуть, але о хлопчик Flash обробляє векторну анімацію ще до того, як вона мала це ім'я 20 (!) років тому. Мені стає сумно читати цю (чудову та інформативну, +1) відповідь, яка починається з того, як речі не працюють у веб-переглядачах, і закінчується тим, як може бути щось подібне до стандарту в майбутньому, можливо (і всі пальці схрещені будуть реалізовані десь). І якщо пункт про стартах «Механізація» з « The тільки програмним забезпеченням ... », що - то не так. Шановний Інтернет, будь ласка, зберіть свої ш * т разом.
експресограф

1
Ви також повинні перевірити Bodymovin, що експортує анімацію з After Effects до svg + JS github.com/bodymovin/bodymovin
airnan

2

Я завжди вважав, що покладання на що-небудь інше, ніж бібліотеки JS, є величезною больовою підтримкою / підтримкою WRT.

Я завжди використовував D3.js . Спочатку було створено для створення інтерактивних елементів SVG / DOM із наборів даних. Однак ви можете йому змінити SVG / DOM, що входить до сторінки, доки JS має доступ до неї.

Я використовую в різних проектах для створення / анімації SVG / DOM. деякі приклади включають м'які інформаційні панелі в режимі реального часу, візуалізацію карти, перетворення DOM та створення файлів SVG для включення в PDF-файли. Я також бачив це в Інтернеті. На веб-сайті є маса прикладів та посилань на сторінки, які його використовували.

Я рекомендую це, оскільки він досить сумісний з веб-переглядачами, має активне співтовариство та легко навчається. Погляньте на веб-сторінку і зверніть увагу на реальний світ, який використовує, щоб побачити невеликий зразок того, що ви можете з цим зробити.


1
Деякі додаткові відомості можуть зробити цю відповідь набагато вищою якістю. Скасування імені бібліотеки не дуже допомагає. Коли D3 слід використовувати на відміну від інших, простіших методів?
Zach Saucier

2

Нижче наведено можливі способи анімації svg:

SVG SMIL ANIMATIONS

SVG можна анімувати за допомогою потужної рідної мови розмітки, що називається SMIL, експортується безпосередньо з таких анімаційних інструментів, як Adobe Animate CC + flash2svg плагін.

Щоб оживити SVG за допомогою SMIL навіть у браузерах, у яких відсутня підтримка, потрібно просто використовувати поліфункцію SMIL.

Поліфайла - це особливий фрагмент коду javascript, який забезпечує підтримку функцій, відсутніх у браузері, переводячи оригінальне кодування в те, що браузер може зрозуміти.

Поліфункція SMIL, зроблена Еріком Віллігерсом, робить саме це: вона переводить SMIL в API веб-анімації, який підтримує навіть браузер Microsoft. Це настільки ефективно, що розробники Google Chrome вирішили відмовитись від нативної підтримки SMIL і зосередитись на веб-анімаціях, залишивши перед завданням Eric Willigers повторно заповнити завдання відтворення SMIL-файлів у Chrome.

Хтось помилково трактував це як знецінення SMIL Chrome і критикував чортів за цей вибір. Але це було не справжньою депресією, а лише переїздом на роботу з інтерпретації SMIL на рівні заповнення.

Насправді самі розробники Chrome посилаються на поліфіл Willigers в тому самому офіційному повідомленні про намір знецінити SMIL.

Тож якщо ви читаєте в Інтернеті про смерть SMIL, не хвилюйтесь. «Смерть» SMIL була сильно посилена. Це більше схоже на відродження.

Щоб використовувати SMIL у всіх браузерах, включаючи IE та EDGE, вам просто потрібно додати цю поліфункцію JavaScript на свою веб-сторінку:

https://github.com/ericwilligers/svg-animation

Ось демонстраційна сторінка з використанням поліфабрикату, зробленого Томом Бірном, автором популярного експортера flash2svg:

сторінка без поліфункції:
http://www.tbyrne.org/staging/smil-polyfill/tears.htm

та однакова сторінка з поліфункцією:
http://www.tbyrne.org/staging/smil-polyfill/tears_polyfill.htm

Якщо ви подивитесь на джерело, це досить зрозуміло.

Крім того, ефекти з поліфіл часто краще, ніж оригінальний SMIL, тому що у багатьох браузерах Web Animations прискорюється апаратне забезпечення, тоді як SMIL зазвичай немає.

ЕКСПОРТ АНІМАЦІЙ У SVG SMIL

Найпростіший спосіб створення анімації SVG - використовувати інструменти на зразок Adobe Animate CC для їх малювання та плагіни типу Flash2svg ( https://github.com/TomByrne/Flash2Svg ) для їх експорту в SVG. З його допомогою ви можете експортувати майже всі анімації + звук як один SVG-файл, як цей епізод мультфільму:
http://www.tbyrne.org/portfolio/smil/LoveDota.svg

SVG ANIMATION JS LIBRARIES

Спосіб javascript є складнішим. Перш за все вам потрібно бути програмістом javascript. Тоді вам доведеться вибирати між багатьма бібліотеками. Більш популярними є:

  • SnapSVG http://snapsvg.io
    Ця бібліотека є спадкоємцем старої та популярної бібліотеки анімації Рафаеля, створеної тим самим автором. Дуже стабільний, але він перетворює SVG у внутрішній формат під час виконання, щоб оживити його. Варіанти морфінгу також дуже базові, просто лінійна інтерполяція. (ПРИМІТКА. Для Adobe Animate CC також існує плагін snap.svg, але експортовані файли роздуті. Експортер створює одну команду snag svg для кожного кадру анімації, а не кожного ключового кадру, створюючи SVG-файл 18 Кбіт з понад 1000 рядків коду, просто повернути простий прямокутник на 360 градусів. Плагін Flash2svg набагато ефективніший, лише одна команда і кілька байтів, щоб виконати ту саму роботу).

  • Greensock MorphSVG
    http://greensock.com/morphSVG
    Повнофункціональна бібліотека морфінгу, яка дозволяє легко анімувати SVG та без необхідності конвертувати їх у внутрішній формат. Просто створіть 3-4 svg ключові кадри в Inkscape, і вікно Greenock SVGMorphing автоматично буде інтерполювати між кадрами та створити всі кадри між ними для плавного відтворення. Ось приклад:
    http://codepen.io/Emasoft/pen/reOqYE

  • 3D Seen.js
    http://seenjs.io/demo-svg-canvas.html
    Якщо ви хочете анімувати в 3D, ця бібліотека дуже потужна.
    Seen.js візуалізує 3D-файли .obj у форматі SVG та анімує їх дуже легко.

SVG редактори зображень

Щодо інструментів, ви можете створювати анімаційні ключові кадри переважно за допомогою трьох програм:

  • Inkscape: відкритий код, має безліч функцій, його вдосконалений пакет для редагування векторів складається з людей, які брали участь у робочій групі SVG. Посилання на формат SVG. Непросто навчитися.

  • Adobe Illustrator: комерційне, дуже потужне програмне забезпечення для векторного малювання, воно пропонує безліч функцій, які ще не підтримуються SVG, але воно також має найгіршу сумісність із форматом. Вам часто потрібно буде вручну редагувати експортований файл SVG, щоб виправити безладний ілюстратор. Але він дуже популярний в художній школі, і всі графіки знають, як ним користуватися.

  • Affinity Designer: Це комерційне програмне забезпечення типу Illustrator, але з відмінною сумісністю SVG, майже на рівні Inkscape. Користувацький інтерфейс набагато привітніший, і зараз він стає дуже популярним серед артистів SVG.

SVG ANIMATION EDITORS

Наразі єдиним редактором анімації SVG є такий:

  • Adobe Animate CC: колишній Adobe Flash Pro повністю переписав Adobe, щоб перейти від застарілої флеш-анімації до сучасної SVG-анімації. Ви можете експортувати отримані анімації SVG разом із власною бібліотекою javascript або вибрати збереження у SVG + SMIL за допомогою плагінів типу "flash2svg". Цей останній варіант дуже ефективний, я завжди використовую його замість роздутого рідного експортера.

Завантажити безкоштовний плагін можна звідси: https://github.com/TomByrne/Flash2Svg

Або встановіть його на панелі плагінів Adobe: https://creative.adobe.com/addons/products/7232

На жаль, Adobe Animate CC є комерційним. Є безкоштовні програми з альтернативною анімацією з відкритим кодом, але я спробував їх усі, і вони все ще смокчуть IMHO. Будемо сподіватися на майбутнє.

Посилання:
Моя більш вичерпна публікація в блозі на тему: https://medium.com/@fmuaddib/the-following-are-the-possible-ways-to-create-professional-animations-in-svg-9d4caca5f4ec

Справа посилається на snap.svg: /programming/35727635/adobe-animate-snap-svg-plugin-huge-files


Деякі браузери також підтримують використання CSS для анімації елементів SVG.
bemdesign

Ця відповідь дуже впевнена і багато ігнорує те, що пропонують найкращі професіонали, які працюють у веб-анімації.
Зак Сосьє

1
Adobe Animate CC далеко не єдине програмне забезпечення для анімації SVG
Zach Saucier

1
Вам не потрібно використовувати бібліотеку JS, щоб анімувати багато SVG-файлів. Ваша відповідь означає, що вони потрібні
Зах Сосьє

4
Привіт, ми звернули увагу, що це дослівно скопійовано з Reddit, який ви зв'язали, reddit.com/r/webdev/comments/4996ph/how_best_to_animate_svgs --- якщо це не ви, то вам потрібно відредагувати свою відповідь, щоб показати її Цитата. Або напишіть відповідь власними словами.
Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.