{"id":4388,"date":"2014-11-21T08:55:55","date_gmt":"2014-11-21T07:55:55","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=4388"},"modified":"2014-11-20T22:57:16","modified_gmt":"2014-11-20T21:57:16","slug":"animer-traces-svg-vivus-js","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/veille-technologique\/animer-traces-svg-vivus-js","title":{"rendered":"Animer ses trac\u00e9s SVG avec Vivus.js"},"content":{"rendered":"<p>L&rsquo;utilisation du SVG est de plus en plus fr\u00e9quente dans la composition de nos \u00e9l\u00e9ments d&rsquo;illustration, nos logotypes ou encore nos ic\u00f4nes. L&rsquo;un des avantages du SVG est sa capacit\u00e9 \u00e0 s&rsquo;adapter \u00e0 tout type de densit\u00e9 de pixels. Un autre avantage est sa capacit\u00e9 \u00e0 h\u00e9riter de styles CSS et la possibilit\u00e9 d&rsquo;animation.<!--more--><\/p>\n<h2>Veni, vidi, Vivus<\/h2>\n<p><a href=\"http:\/\/maxwellito.github.io\/vivus\/\">Vivus.js<\/a> est une biblioth\u00e8que JS tr\u00e8s l\u00e9g\u00e8re et sans aucune d\u00e9pendance (pas de jQuery, Zepto ou MooTools \u00e0 charger) vous permettant d&rsquo;animer vos trac\u00e9s SVG assez simplement.<br \/>\nCelle-ci propose diff\u00e9rents types d&rsquo;animation par d\u00e9faut et un syst\u00e8me de mise en place de sc\u00e9nario.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-path-svg.png\" alt=\"\" width=\"1133\" height=\"359\" class=\"aligncenter size-full wp-image-4413\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-path-svg.png 1133w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-path-svg-300x95.png 300w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-path-svg-600x190.png 600w\" sizes=\"(max-width: 1133px) 100vw, 1133px\" \/><\/p>\n<h2>Comment fonctionne-elle&nbsp;?<\/h2>\n<p>Pour cr\u00e9er ses diff\u00e9rentes animations, le script utilise la propri\u00e9t\u00e9 CSS <code>strokeDashoffset<\/code> des \u00e9l\u00e9ments de trac\u00e9. Cette propri\u00e9t\u00e9 g\u00e8re le d\u00e9calage du trac\u00e9 de chaque ligne du SVG. Ajoutez un peu de JS pour mettre \u00e0 jour la valeur de d\u00e9calage progressivement et la magie fait son effet.<br \/>\nMalheureusement, il y a un probl\u00e8me avec cette propri\u00e9t\u00e9 qui n&rsquo;est disponible que sur l&rsquo;\u00e9l\u00e9ment <code>path<\/code>. Donc si vous utilisez des <code>circle<\/code>, <code>rect<\/code>, <code>line<\/code> ou <code>polyline<\/code>, l&rsquo;animation ne fonctionnera pas. \u00c0 cause de cela, une autre classe est disponible dans le r\u00e9pertoire du projet, appel\u00e9e <code>pathformer<\/code>. Son but est de transformer tous les objets de votre SVG en \u00e9l\u00e9ments <code>path<\/code> afin que la propri\u00e9t\u00e9 puisse \u00eatre utilis\u00e9e et animer votre SVG.<\/p>\n<p>L&rsquo;animation se d\u00e9roule toujours en \u00ab\u00a0dessinant\u00a0\u00bb les \u00e9l\u00e9ments dans le m\u00eame ordre, dans l&rsquo;ordre d&rsquo;apparition des tags SVG.<\/p>\n<p>Ce code est inspir\u00e9 d&rsquo;autres travaux existants. Le script qui dessine les trac\u00e9s est inspir\u00e9 de l&rsquo;article <a href=\"http:\/\/tympanus.net\/codrops\/2013\/12\/30\/svg-drawing-animation\/\">SVG Drawing Animation<\/a> (ressources que je diffuse r\u00e9guli\u00e8rement dans les <a href=\"https:\/\/www.creativejuiz.fr\/blog\/?s=ressources+du+web\">Ressources du Web<\/a> ou sur <a href=\"https:\/\/twitter.com\/geoffreycrofte\">mon compte Twitter<\/a>). La classe pathformer est inspir\u00e9e de <a href=\"https:\/\/github.com\/Waest\/SVGPathConverter\">SVGPathConverter de Waest<\/a>.<\/p>\n<p><a href=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-animation.gif\" class=\"fancy\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2014\/11\/vivus-animation.gif\" alt=\"Animation Vivus\" width=\"882\" height=\"288\" class=\"aligncenter size-full wp-image-4412\" \/><\/a><\/p>\n<h2>Comment l&rsquo;utiliser&nbsp;?<\/h2>\n<p>C&rsquo;est relativement simple, \u00e0 partir du moment o\u00f9 vous avez votre trac\u00e9 SVG. Je ne vais pas vous apprendre \u00e0 faire du dessin vectoriel :p<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/maxwellito\/vivus\/archive\/master.zip\" target=\"_blank\">T\u00e9l\u00e9chargez<\/a> l&rsquo;archive zipp\u00e9e depuis Github<\/li>\n<li>Placez les fichiers se trouvant dans le dossier \u00ab\u00a0src\u00a0\u00bb de l&rsquo;archive dans votre projet web<\/li>\n<li>Avant la balise <code>&lt;\/body&gt;<\/code> chargez les deux fichiers comme suit&nbsp;:\n<pre class=\"code\"><code class=\"html boc-nocontrols boc-nogutter\">&lt;script src=\"assets\/js\/vivus.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<\/li>\n<li>Puis en dessous de cet appel JS, initialisez l&rsquo;animation comme suit&nbsp;:\n<pre class=\"code\"><code class=\"html boc-nocontrols boc-nogutter\">&lt;script&gt;\r\nvar anim1 = new Vivus(\r\n   'animation-id', \r\n   {\r\n      type:     'delayed',\r\n      duration: 150,\r\n      start:    'autostart',\r\n      delay:    10, \/\/seulement pour le type \"delayed\"\r\n      selfDestroy: false\r\n   },\r\n   function() {\r\n      \/\/ fonction de callback\r\n   }\r\n);\r\n&lt;\/script&gt;<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>Une fois l&rsquo;animation initialis\u00e9e vous avez acc\u00e8s \u00e0 3 m\u00e9thodes pour contr\u00f4ler l&rsquo;animation : <code>play<\/code>, <code>stop<\/code> et <code>reset<\/code> \u00e0 utiliser comme suit :<\/p>\n<pre class=\"code\"><code class=\"javascript boc-nocontrols boc-nogutter\">anim1.reset();\r\nanim1.play();<\/code><\/pre>\n<p>Les types scenario permettent \u00e9galement de jouer avec un sc\u00e9nario plus pr\u00e9cis dont les \u00e9tapes sont d\u00e9finies directement dans des attributs data-* pos\u00e9s sur les composants du SVG directement.<br \/>\nPour plus de d\u00e9tail, je vous renvoie sur la <a href=\"http:\/\/maxwellito.github.io\/vivus\/\">documentation officielle<\/a>.<\/p>\n<p>Amusez-vous bien !<\/p>\n<p class=\"center\"><a class=\"download\" href=\"https:\/\/github.com\/maxwellito\/vivus\/archive\/master.zip\">T\u00e9l\u00e9charger le script vivus.js<\/a> <a class=\"demonstration\" href=\"http:\/\/maxwellito.github.io\/vivus\/\">Consulter la doc et les d\u00e9mo<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;utilisation du SVG est de plus en plus fr\u00e9quente dans la composition de nos \u00e9l\u00e9ments d&rsquo;illustration, nos logotypes ou encore nos ic\u00f4nes. L&rsquo;un des avantages du SVG est sa capacit\u00e9 \u00e0 s&rsquo;adapter \u00e0 tout type de densit\u00e9 de pixels. Un autre avantage est sa capacit\u00e9 \u00e0 h\u00e9riter de styles CSS et la possibilit\u00e9 d&rsquo;animation.<\/p>\n","protected":false},"author":4,"featured_media":4414,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[50,12],"tags":[120,93,125,305],"coauthors":[597],"class_list":["post-4388","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ressources-telechargements","category-veille-technologique","tag-animation","tag-icones","tag-javascript","tag-svg"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/4388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=4388"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/4388\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/4414"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=4388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=4388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=4388"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=4388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}