Bagaimana Anda menghidupkan SVG untuk web?

12

Grafik vektor sekarang mengambil alih web dan bahkan aplikasi seluler. Ikon, tombol, dan elemen halaman web atau aplikasi seluler kini menjadi semakin berbasis vektor, menjatuhkan bitmap karena kebutuhan untuk ditampilkan pada semua jenis resolusi layar, dpi, rasio, dll. Dan karena kemampuan yang berguna untuk "memperbesar" ke halaman baca yang lebih baik di browser seluler membuat aset bitmap jelek dan tidak dapat digunakan lagi.

Jadi sekarang saatnya untuk mulai membuat ikon animasi, latar belakang dan kontrol di SVG tetapi bagaimana Anda menghidupkan file SVG?

Emanuele Sabetta
sumber
1
Pertanyaan Anda sangat luas dan dapat menghasilkan jawaban berdasarkan pendapat yang tidak paling cocok untuk GDSE. Harap tinjau bantuan kami untuk melihat cara terbaik untuk bertanya / menjawab pertanyaan. Juga "terbaik" selalu sangat subyektif dan peka konteks ketika datang ke alat dan proses.
bemdesign
Jika Anda ingin tahu tentang animasi SVG untuk penggunaan web, mungkin Anda harus merampingkan pertanyaan Anda dan menanyakannya di stackoverflow.com .
Luciano
Ini adalah pertanyaan yang sangat penting dan sering dijawab. Silakan berkontribusi dengan jawaban Anda jika Anda tahu alat atau perpustakaan lain untuk menjiwai svg. Terima kasih.
Emanuele Sabetta
4
Masalah yang saya miliki dengan pertanyaan ini adalah dapat dianggap sebagai pertanyaan pengumpulan sumber daya berdasarkan meminta alat. Saya tidak keberatan dengan pertanyaan jika kita dapat fokus pada apa yang seharusnya kita diskusikan, pelaksanaan animasi SVG. Saya telah mengedit pertanyaan Anda agar lebih baik berada dalam cakupan
DᴀʀᴛʜVᴀᴅᴇʀ
@EmanueleSabetta Jika Anda telah menerima jawaban untuk pertanyaan Anda, silakan tandai salah satu jawaban sebagai jawaban yang diterima di bawah ini.
DᴀʀᴛʜVᴀᴅᴇʀ

Jawaban:

18

Banyak jawaban ini juga diposting dalam pertanyaan terkait ini tentang cara menghidupkan ilustrasi untuk web.


Hindari animasi SMIL

Sara Soueidan, mungkin animator terbaik SVG di web, menulis , "Saya tahu saya menulis panduan untuk animasi SMIL tetapi, melihat masa depan mereka, saya secara pribadi tidak menggunakannya lagi." Anda seharusnya juga tidak.

Animasi SMIL tidak berfungsi di IE, Edge, beberapa peramban seluler apa pun , dan secara bertahap dijatuhkan oleh Chrome / Opera (meskipun, baru-baru ini, tim Chrome mengatakan penghentian ini untuk sementara ditangguhkan ). Anda harus menghindari menggunakannya 99% dari waktu.

Gunakan CSS untuk animasi yang sangat sederhana

SVG sebagian besar dapat dianimasikan menggunakan CSS murni (termasuk menggunakan :hoverstatus, transforms, transitions, dan animations). Ini direncanakan untuk mendapatkan dukungan penuh animasi CSS tetapi saat ini hanya beberapa yang didukung dan dapat bermasalah dengan masalah lintas browser.

Sara Soueidan mengatakan CSS bagus untuk membuat animasi SVG tetapi lebih menyukai JS karena membantu menyelesaikan masalah lintas browser ini. Dengan demikian, gunakan ketika Anda bisa kembali ke JS ketika animasinya lebih kompleks atau tidak bekerja lintas browser.

Gunakan animasi JavaScript jika CSS tidak berfungsi

Sebagian besar waktu, SVG dapat dianimasikan menggunakan JavaScript kecil tanpa memerlukan perpustakaan animasi JavaScript. Animasi di JS memiliki lebih banyak dukungan lintas browser dan cukup mudah digunakan dengan pemahaman dasar.

Untuk animasi kompleks yang memerlukan penggunaan garis waktu atau yang serupa, menggunakan perpustakaan seperti GSAP bisa sangat membantu. Ada banyak pustaka animasi SVG lainnya, Snap.svg adalah perpustakaan besar yang lain, tetapi kebanyakan tidak menangani animasi semudah atau pemain seperti GSAP.

Untuk jenis animasi tertentu, menggunakan plugin JS tertentu seperti GSAP's MorphSVG dapat menghemat sedikit waktu karena mereka menangani masalah lintas browser dan semua perhitungan. Namun, sebagian besar animasi tidak memerlukan plugin seperti ini. Lihat "Panduan untuk Fitur Alternatif untuk SMIL" untuk lebih lanjut.

Ini juga dapat diterima untuk menggunakan polyfill untuk SMIL, tapi saya lelah melakukannya karena mereka tidak banyak digunakan / diuji. Dengan itu, Eric Willigers dan FakeSmile adalah dua yang paling umum.

Alat

Satu-satunya perangkat lunak yang saya temui yang mengekspor ke SVG + JS adalah plugin Adobe After Effects yang disebut Lottie (sebelumnya Bodymovin), ekstensi Flash yang disebut Flash 2 SVG , dan alat online kecil yang disebut SVG Circus . Selain itu, animator perangkat lunak seperti Adobe Edge Animate, Adobe Animate CC, atau Animatron mengekspor ke animasi SMIL yang tidak boleh digunakan. Karena itu, sebaiknya beberapa pengembang membuat animasi SVG + CSS atau SVG + JS menggunakan SVG yang diekspor dari editor . Inkscape memiliki banyak sumber daya yang menghubungkan tutorial dan contoh cara melakukannya.

Saya yakin di masa depan lebih banyak perangkat lunak animasi akan mendukung ekspor ke SVG + JS.


Beberapa catatan penting lainnya

  • Penting untuk diingat kinerja . Sara Drasner membuat beberapa tolok ukur kinerja untuk SVG yang menunjukkan Anda harus memilih untuk animasi CSS yang dipercepat setiap kali memungkinkan tetapi mundur pada pendekatan JavaScript yang baik bila tidak memungkinkan.

  • Cara terbaik untuk menggunakan SVGs dalam <object>tag atau disematkan langsung dalam <svg>elemen XML jika itu interaktif dan sebagai gambar latar belakang jika tidak interaktif, tetapi ada cara lain untuk melakukannya juga.


Untuk tampilan animasi web yang lebih lengkap, baca posting Rachel Nabor di A List Part . Untuk beberapa saran tambahan dalam tooling, postingan ini sangat membantu, meskipun saya tidak setuju dengan semua sentimen, terutama dengan cara menyajikan animasi SMIL.

Zach Saucier
sumber
- SVG juga digunakan pada aplikasi seluler. Pertumbuhan terbesar untuk SVG dalam dua tahun terakhir adalah dalam aset vektor aplikasi UI. Bitmap tidak digunakan lagi.
Emanuele Sabetta
Juga, saat ini tidak ada cara untuk membuat animasi besar dengan CSS. Anda perlu SMIL untuk membuat animasi besar seperti ini: tbyrne.org/portfolio/smil/LoveDota.svg
Emanuele Sabetta
Tentang pilihan tim pengembang Chrome untuk berhenti mendukung SMIL, mereka yang berada di utas pengumuman tersebut mengatakan bahwa alasan utama adalah fakta bahwa Anda sekarang dapat menggunakan SMIL melalui polyfill ini: github.com/ericwilligers/svg-animation
Emanuele Sabetta
4
Ya ampun, aku semua untuk mencari tahu dari teknologi jika mereka payah, tapi oh boy Flash menangani animasi vektor bahkan sebelum ia memiliki nama itu 20 (!) tahun yang lalu. Saya sedih membaca jawaban (bagus dan informatif, +1) ini yang dimulai dengan bagaimana hal-hal tidak berfungsi di browser dan berakhir dengan bagaimana mungkin ada sesuatu seperti standar di masa depan, mungkin (dan semua jari semoga diterapkan) suatu tempat). Dan jika paragraf "Tooling" dimulai dengan " Satu- satunya perangkat lunak ... ", ada sesuatu yang salah. Internet yang terhormat, tolong kumpul-kan.
rapidograph
1
Anda juga harus memeriksa Bodymovin yang mengekspor animasi dari After Effects ke svg + JS github.com/bodymovin/bodymovin
airnan
2

Saya selalu menemukan mengandalkan apa pun selain perpustakaan JS untuk menjadi sangat besar dukungan / pemeliharaan WRT.

Aku selalu menggunakan D3.js . Awalnya dibuat untuk membuat elemen SVG / DOM interaktif dari set data. Namun, Anda dapat memodifikasi SVG / DOM yang disertakan dalam halaman, selama JS memiliki akses ke sana.

Saya telah menggunakan berbagai proyek untuk membuat / menghidupkan SVG / DOM. beberapa contoh termasuk soft-time dashboard, visualisasi peta, transformasi DOM, dan untuk membuat file SVG untuk dimasukkan dalam PDF. Saya sudah melihatnya di seluruh web juga. Situs web ini memiliki banyak contoh dan tautan ke halaman yang telah menggunakannya.

Saya merekomendasikannya karena ini cukup kompatibel lintas browser, memiliki komunitas aktif, dan mudah dipelajari. Lihatlah halaman web dan perhatikan kegunaan dunia nyata untuk melihat contoh kecil dari apa yang dapat Anda lakukan dengannya.

bob0the0mighty
sumber
1
Beberapa info tambahan bisa membuat jawaban ini jauh lebih berkualitas. Menjatuhkan nama perpustakaan tidak terlalu membantu. Kapan sebaiknya D3 digunakan sebagai kebalikan dari metode lain yang lebih sederhana?
Zach Saucier
2

Berikut ini adalah cara yang mungkin untuk menghidupkan svg:

ANIMASI SMIL SVG

SVG dapat dianimasikan melalui bahasa markup asli yang kuat, yang disebut SMIL, yang diekspor langsung dari alat animasi seperti plugin Adobe Animate CC + flash2svg.

Untuk menghidupkan SVG dengan SMIL bahkan pada browser yang tidak memiliki dukungan, Anda hanya perlu menggunakan polyfill SMIL.

Polyfill adalah potongan kode javascript khusus yang menyediakan dukungan untuk fitur-fitur yang hilang dari peramban, menerjemahkan penyandian asli ke kode yang dapat dipahami peramban.

Polyfill SMIL yang dibuat oleh Eric Willigers tidak hanya itu: ia menerjemahkan SMIL ke Web Animations API yang bahkan didukung oleh browser Microsoft. Sangat efisien sehingga pengembang Google Chrome memutuskan untuk menghentikan dukungan SMIL asli dan fokus pada Animasi Web, menyerahkan tugas polyfill kepada Eric Willigers untuk memutar file SMIL di Chrome.

Seseorang salah menafsirkan ini sebagai penghentian SMIL oleh Chrome, dan mengkritik para devs untuk pilihan ini. Tapi itu bukan penghinaan sejati, hanya relokasi pekerjaan menafsirkan SMIL pada tingkat polyfill.

Bahkan Chrome devs sendiri mengutip polyfill Willigers di sangat resmi mengumumkan tentang niat mereka untuk mencela SMIL.

Jadi, jika Anda membaca di web tentang kematian SMIL, jangan khawatir. “Kematian” SMIL sangat dibesar-besarkan. Ini lebih seperti kelahiran kembali.

Untuk menggunakan SMIL di semua browser, termasuk IE dan EDGE, Anda hanya perlu menambahkan polyfill javascript ini ke halaman web Anda:

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

Berikut ini adalah halaman demo menggunakan polyfill yang dibuat oleh Tom Byrne, penulis eksportir flash2svg yang populer:

halaman tanpa polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears.htm

dan halaman yang sama dengan polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears_polyfill.htm

Jika Anda melihat sumbernya cukup jelas.

Juga kinerja dengan polyfill seringkali lebih baik daripada SMIL asli, karena pada banyak browser Web Animasi dipercepat perangkat keras, sedangkan SMIL biasanya tidak.

ANIMASI EKSPOR DI SVG SMIL

Cara yang lebih sederhana untuk membuat animasi SVG adalah dengan menggunakan alat-alat seperti Adobe Animate CC untuk menggambar mereka dan plugin seperti Flash2svg ( https://github.com/TomByrne/Flash2Svg ) untuk mengekspornya dalam SVG. Dengannya Anda dapat mengekspor hampir semua animasi + suara sebagai file SVG tunggal, seperti episode kartun ini:
http://www.tbyrne.org/portfolio/smil/LoveDota.svg

ANIMASI PERPUSTAKAAN JS

Cara javascript lebih rumit. Pertama-tama Anda harus menjadi programmer javascript. Maka Anda harus memilih di antara banyak perpustakaan. Yang lebih populer adalah:

  • SnapSVG http://snapsvg.io
    Perpustakaan ini adalah penerus dari perpustakaan animasi Raphael lama dan populer yang dibuat oleh penulis yang sama. Sangat stabil, tetapi mengkonversi SVG dalam format internal saat runtime untuk menghidupkannya. Opsi morphing juga sangat mendasar, hanya interpolasi linier. (CATATAN: Ada juga plugin snap.svg untuk Adobe Animate CC, tetapi file yang diekspor membengkak. Eksportir menghasilkan satu perintah snap svg untuk setiap frame animasi, tidak setiap frame kunci, menghasilkan file svg 18Kb dengan lebih dari 1000 baris kode, hanya untuk memutar persegi panjang sederhana melalui 360 derajat. Plugin Flash2svg jauh lebih efisien, hanya satu perintah dan beberapa byte untuk melakukan pekerjaan yang sama).

  • Greensock MorphSVG
    http://greensock.com/morphSVG
    Perpustakaan morphing berfitur lengkap yang memungkinkan untuk menghidupkan SVG dengan mudah, dan tanpa perlu mengubahnya dalam format internal. Cukup buat 3-4 svg keyframe di Inkscape dan Greenock SVGMorphing lib akan secara otomatis menginterpolasi antara frame dan membuat semua frame di antara untuk pemutaran yang lancar. Berikut ini sebuah contoh:
    http://codepen.io/Emasoft/pen/reOqYE

  • 3D Seen.js
    http://seenjs.io/demo-svg-canvas.html
    Jika Anda ingin menghidupkan 3D, perpustakaan ini sangat kuat.
    Seen.js merender file .obj 3D dalam SVG dan menganimasinya dengan sangat mudah.

EDITOR GAMBAR SVG

Adapun alat-alatnya, Anda dapat membuat kerangka tombol animasi terutama dengan tiga perangkat lunak:

  • Inkscape: open source, memiliki banyak fitur, ini adalah paket pengeditan vektor canggih yang dibuat oleh orang-orang yang berpartisipasi dalam Kelompok Kerja SVG. Referensi untuk format SVG. Tidak mudah dipelajari.

  • Adobe Illustrator: komersial, perangkat lunak menggambar vektor yang sangat kuat, ia menawarkan banyak fitur yang masih belum didukung oleh SVG, tetapi juga memiliki kompatibilitas terburuk dengan format. Anda akan sering perlu mengedit file SVG yang diekspor secara manual untuk memperbaiki kekacauan ilustrator. Tapi ini sangat populer di sekolah seni, dan semua ahli grafiti tahu cara menggunakannya.

  • Affinity Designer: Ini adalah perangkat lunak komersial seperti Illustrator, tetapi dengan kompatibilitas SVG yang sangat baik, hampir di tingkat Inkscape. UI jauh lebih ramah, dan sekarang menjadi sangat populer di kalangan seniman SVG.

EDITOR ANIMASI SVG

Saat ini satu-satunya editor animasi SVG adalah ini:

  • Adobe Animate CC: mantan Adobe Flash Pro sepenuhnya ditulis ulang oleh Adobe untuk bermigrasi dari animasi flash yang sekarang usang ke animasi SVG modern. Anda dapat mengekspor animasi SVG yang dihasilkan bersama dengan pustaka javascript kustom, atau memilih untuk menyimpan di SVG + SMIL menggunakan plugin seperti "flash2svg". Opsi terakhir ini sangat efisien, saya selalu menggunakannya sebagai pengganti eksportir asli yang menggembung.

Anda dapat mengunduh plugin gratis dari sini: https://github.com/TomByrne/Flash2Svg

Atau instal dari panel Adobe Plugins: https://creative.adobe.com/addons/products/7232

Sayangnya, Adobe Animate CC bersifat komersial. Ada aplikasi animasi alternatif open source gratis, tapi saya mencoba semuanya dan mereka masih menyedot IMHO. Mari berharap untuk masa depan.

Referensi:
Posting blog saya yang lebih lengkap mengenai masalah ini: https://medium.com/@fmuaddib/the-following-are-the-pos-ways-to-create-professional-animations-in-svg-9d4caca5f4ec

Kasing direferensikan tentang snap.svg: /programming/35727635/adobe-animate-snap-svg-plugin-huge-files

Emanuele Sabetta
sumber
Beberapa browser juga mendukung penggunaan CSS untuk menghidupkan elemen SVG.
bemdesign
Jawaban ini sangat beralasan dan mengabaikan banyak hal yang disarankan oleh para profesional top dalam animasi web.
Zach Saucier
1
Adobe Animate CC jauh dari satu-satunya perangkat lunak animasi SVG
Zach Saucier
1
Anda tidak harus menggunakan perpustakaan JS untuk menghidupkan banyak SVG. Jawaban Anda menyiratkan bahwa mereka diperlukan
Zach Saucier
4
Hai, ini menjadi perhatian kami bahwa ini disalin kata demi kata dari Reddit yang Anda tautkan , reddit.com/r/webdev/comments/4996ph/how_best_to_animate_svgs --- jika ini bukan Anda, maka Anda perlu mengedit jawaban Anda untuk menunjukkannya kutipan. Atau tulis jawabannya dengan kata-kata Anda sendiri.
Ryan