お世話になっております。
snap.svg.jsを使ってsvgアニメーションを複数実装したいのですがうまく動作せず困っております。
かなり初歩的な問題かと思うのですが、自分の知識では解決できず・・・
ご助言いただけますと幸いです。
■やりたいこと
・snap.svg.jsを使ったsvgアニメーション(2種類のパスをゆっくり動かしてぐにょぐにょ動かす)
・ループさせる
・同じページに図形違いで複数設置。効果は全く同じ
■事象
・ひとつだけなら正常に動くが、パスを追加するとループせず1回で終わってしまう(jsがうまく読み込まれていないようです)
HTML
1 2<svg id="sample01" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" 3 y="0px" viewBox="0 0 625.73 823.29" enable-background="new 0 0 625.73 823.29" xml:space="preserve"> 4<path fill-rule="evenodd" clip-rule="evenodd" fill="#000" d="M275.7.53C426.33,17,506.42,141.82,571,246.78c98.44,160-143.65,206-141,325.72,1.33,59.85,89.29,159.78,21.28,232.78C402.06,858.11,306.22,859.45,281,866.47-203.83,940.65,85.38,348.36,87.57,79.23,72.26,7.62,232-2.76,275.7.53Z"/> 5</svg> 6 7<svg id="sample02" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" 8 y="0px" viewBox="0 0 568.6 858.94" enable-background="new 0 0 568.6 858.94" xml:space="preserve"> 9<path fill-rule="evenodd" clip-rule="evenodd" fill="#000" d="M310.84,13.68C239.84,78.22,215.4,89,181.47,88.94c-121.1,0-208,117.35-174.07,233.62C24.27,380.41,48.25,436,64,494.19c20.22,74.94,15.44,155,49.78,226.25,41,97.09,132.37,99.24,221.46,79.41,45.08.54,92.35,8,134.79-11.21V31.72C418.08,3.67,360.36-13.51,310.84,13.68Z"/> 10</svg>
Javascript
1var $svg01 = Snap( '#sample01 path' ); 2var path01 = [ 3 'M251.06,41.43c150.64,16.47,99,178,200.85,247.34C600.37,358.93,701.57,571.82,552.37,624c-55.15,23.28-33.08,58.68-101.09,131.68C402.06,808.55,306.22,809.9,281,816.91-203.83,891.1,85.38,298.81,87.57,29.68,72.26-41.94,207.4,38.14,251.06,41.43Z', //パス1 4 'M275.7.53C426.33,17,506.42,141.82,571,246.78c98.44,160-143.65,206-141,325.72,1.33,59.85,89.29,159.78,21.28,232.78C402.06,858.11,306.22,859.45,281,866.47-203.83,940.65,85.38,348.36,87.57,79.23,72.26,7.62,232-2.76,275.7.53Z', //パス2 5]; 6var $svg02 = Snap( '#sample02 path' ); 7var path02 = [ 8 'M447.49,59.1c-71,64.54-85.13-30.11-167.41,6.2C170,113.88,250.63,313.1,106,298.92,46,293-13.15,412.35,2.56,470.55,22.79,545.49,237,625.51,271.33,696.8c41,97.09,73.39,179,162.48,159.16,45.08.53,92.35-71.73,134.79-91V8.07C516.69-20,497,31.91,447.49,59.1Z', //パス1 9 'M310.84,13.68C239.84,78.22,215.4,89,181.47,88.94c-121.1,0-208,117.35-174.07,233.62C24.27,380.41,48.25,436,64,494.19c20.22,74.94,15.44,155,49.78,226.25,41,97.09,132.37,99.24,221.46,79.41,45.08.54,92.35,8,134.79-11.21V31.72C418.08,3.67,360.36-13.51,310.84,13.68Z', //パス2 10]; 11var indexPath = 0; 12var DURATION = 1000; 13 14function playAnimation() { 15 if (indexPath === 0) { 16 $svg01.animate( 17 {d: path01[0] }, DURATION, playAnimation ); 18 $svg02.animate( 19 {d: path02[0] }, DURATION, playAnimation ); 20 indexPath = 1; 21 } 22 else { 23 $svg01.animate( 24 {d: path01[1] }, DURATION, playAnimation ); 25 $svg02.animate( 26 {d: path02[1] }, DURATION, playAnimation ); 27 indexPath = 0; 28 } 29 } 30playAnimation();
上記のplayAnimation
内の$svg02.animate
を消せば$svg01
は正常に動作します。
■参考サイト
https://qiita.com/seito2014/items/07908cb732a62b40fd72
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/27 23:55