質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

2006閲覧

svg画像がうねうね動くコンテンツを複数作成したい(2個目以降のコンテンツにjsが効かない)

lisaaaan

総合スコア5

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/03/08 10:29

編集2020/03/09 04:52

前提・実現したいこと

svg画像がうねうね動くコンテンツを複数作成したいのです。
コンテンツが1つの時はうまく動いたのですが
コンテンツを複数に増やすと2個目以降は上手くうねうね動きません・・・。

元々コンテンツ1つの時は
<svg>のなかの<path>タグの名前は id="js-svg-body"のようにidで指定していましたが
複数に適用させるためclassに変更しています。

どのように指定すれば2つ目以降も同様のjsを適用できるでしょうか??

codepenにもソースコードを載せています。
https://codepen.io/lisaaaan/pen/poJdxqZ

該当のソースコード

【複数で2個目以降が動かないバージョン】

html

1 2<div class="wrap"> 3<svg id="test" width="750" height="400"> 4 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z"/> 5</div> 6 7<div class="wrap"> 8<svg id="test" width="750" height="400"> 9 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z"/> 10</div> 11 12<div class="wrap"> 13<svg id="test" width="750" height="400"> 14 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z"/> 15</div>

js

1let $svgBody = Snap('.js-svg-body'), 2 path =['M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z', 3 4'M646.924 390.1c-53.039-5.959-83.193-4.684-107.079 0-85.225 16.715-190.888 8.9-293.215 1-59.013-4.557-87.085-4.1-148.3 5.892-30.836 5.033-86.8-23.782-85.392-76.446 1.517-56.58-13.494-93.329-3.124-150.77C13.817 147.625-2.91 90.5.449 78.23 12.945 32.574 51.9 15.319 103.541 23.251c54.023 8.3 112.066 1.344 180.116-17.527C372.881-19.019 475.77 45.83 548.852 23.6 610.9 4.731 673.718 6.706 702.965 21.616c18.745 9.555 25.5 18.161 33.025 48.668C748 118.952 750 159.674 750 203.376c0 64.123-1.289 78.037-10.007 122.167-10.008 50.657-54.385 68.907-93.069 64.557z', 5 6'M653.667 391.333c-52.723 8.487-79.008 8.146-114.167.716-85.046-17.972-190.864-6.4-293.248 1.012-88.639 6.418-146.646 9.473-181.65 4.382-30.933-4.5-56.006-18.33-52.063-76.228 3.633-53.342 25.516-86.246 2.058-140.674C4.777 157.757.446 87.413.044 74.463-1.4 27.793 33.058 24.889 84.6 20.665 138.623 16.237 215.619-3.775 283.284.629c92.412 6.014 194.364 13.926 265.224 18.2 64.745 3.911 81.191-4.5 136.163-9.371 20.963-1.857 61.017 25.576 58.006 59.063-4.57 50.833-30 90.653-10 131.363 28.693 58.4 17 124.235-1 145.619-33.608 39.927-41.93 40.021-78.01 45.83z'], 7 8 SPEED =1500, 9 EASING = mina.linear, 10 i = 0; 11 12 13 14 15function AnimationSvg(){ 16 17 $svgBody.animate({d: path[i] },SPEED,EASING,AnimationSvg); 18 19 i++; 20 21 if(i === path.length){ 22 i = 0; 23 } 24} 25 26AnimationSvg(); 27 28

【1つで動くバージョン】

html

1<div class="wrap"> 2<svg id="test" width="750" height="400"> 3 <path x="0" y="0" id="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z"/> 4</svg> 5</div> 6

js

1let $svgBody = Snap('#js-svg-body'), 2 path =['M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z', 3 4'M646.924 390.1c-53.039-5.959-83.193-4.684-107.079 0-85.225 16.715-190.888 8.9-293.215 1-59.013-4.557-87.085-4.1-148.3 5.892-30.836 5.033-86.8-23.782-85.392-76.446 1.517-56.58-13.494-93.329-3.124-150.77C13.817 147.625-2.91 90.5.449 78.23 12.945 32.574 51.9 15.319 103.541 23.251c54.023 8.3 112.066 1.344 180.116-17.527C372.881-19.019 475.77 45.83 548.852 23.6 610.9 4.731 673.718 6.706 702.965 21.616c18.745 9.555 25.5 18.161 33.025 48.668C748 118.952 750 159.674 750 203.376c0 64.123-1.289 78.037-10.007 122.167-10.008 50.657-54.385 68.907-93.069 64.557z', 5 6'M653.667 391.333c-52.723 8.487-79.008 8.146-114.167.716-85.046-17.972-190.864-6.4-293.248 1.012-88.639 6.418-146.646 9.473-181.65 4.382-30.933-4.5-56.006-18.33-52.063-76.228 3.633-53.342 25.516-86.246 2.058-140.674C4.777 157.757.446 87.413.044 74.463-1.4 27.793 33.058 24.889 84.6 20.665 138.623 16.237 215.619-3.775 283.284.629c92.412 6.014 194.364 13.926 265.224 18.2 64.745 3.911 81.191-4.5 136.163-9.371 20.963-1.857 61.017 25.576 58.006 59.063-4.57 50.833-30 90.653-10 131.363 28.693 58.4 17 124.235-1 145.619-33.608 39.927-41.93 40.021-78.01 45.83z'], 7 8 SPEED =1500, 9 EASING = mina.linear, 10 i = 0; 11 12function AnimationSvg(){ 13 14 $svgBody.animate({d: path[i] },SPEED,EASING,AnimationSvg); 15 16 i++; 17 18 if(i === path.length){ 19 i = 0; 20 } 21} 22 23 24AnimationSvg(); 25 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/09 01:23

とりあえず、一つで動くバージョンを例示ください
lisaaaan

2020/03/09 04:54

コメントありがとうございます! 【1つで動くバージョン】の追記行いました。 もしわかることがありましたらお教えいただけますと助かります!
guest

回答3

0

ちょっと微妙ですが

投稿2020/03/09 12:47

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2020/03/10 09:56 編集

yambejpさん(初回投稿時呼び捨てになってました。ごめんなさい)のがほぼ正解なきがしてきました。 複数のSVGタグ、1つのpathがある時 1.複数(arrayとか)のsvgがあるときは、snap()はsetを返す http://snapsvg.io/docs/#Snap 2.set.forEachでぐるぐる回せる http://snapsvg.io/docs/#Set.forEach 1つのSVGタグ、複数のpathがある時 1.s=snap(”#idなどで指定”) 2.s.selectAll(query)で複数指定 http://snapsvg.io/docs/#Element.selectAll …みたいに読めた。
lisaaaan

2020/03/10 09:48

yambejpさん、ありがとうございます!おお!3つとも動いてますね!! oikashinoaさんも、さらなる丁寧な解説ありがとうございますm(_ _)m ただちょっと動きが滑らかでなくなってしまうのはなぜなんでしょうね…。 元のデータ通りvar SPEED =1500;とすると微かに動く感じになっちゃいますもんね。 頂いたお二方の回答を元に、動きが滑らかになるか自分でもいじって実験してみます。 せっかくゴールが見えてきたので、しつこいですがこちらの投稿引き続き動きを滑らかにするアンサー募集させて頂きますm(_ _)m 解決できる方いましたらお教えいただければと思います!!
oikashinoa

2020/03/11 01:39

svg.jsのほうが軽いとか。他のライブラリーも検討したほうが良いと思います。
guest

0

自己解決

コメント頂いた方ありがとうございます。

どこかが競合しているのかなと思い、自分でも色々実験してみましたがスムーズには動かず…

最終手段ですが、結局pathだけまとめて、それぞれバラバラに指定することにしました。

JavaScript

1 2var pathD01 = 'M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z'; 3 4var pathD02 = 'M646.924 390.1c-53.039-5.959-83.193-4.684-107.079 0-85.225 16.715-190.888 8.9-293.215 1-59.013-4.557-87.085-4.1-148.3 5.892-30.836 5.033-86.8-23.782-85.392-76.446 1.517-56.58-13.494-93.329-3.124-150.77C13.817 147.625-2.91 90.5.449 78.23 12.945 32.574 51.9 15.319 103.541 23.251c54.023 8.3 112.066 1.344 180.116-17.527C372.881-19.019 475.77 45.83 548.852 23.6 610.9 4.731 673.718 6.706 702.965 21.616c18.745 9.555 25.5 18.161 33.025 48.668C748 118.952 750 159.674 750 203.376c0 64.123-1.289 78.037-10.007 122.167-10.008 50.657-54.385 68.907-93.069 64.557z'; 5 6var pathD03 = 'M653.667 391.333c-52.723 8.487-79.008 8.146-114.167.716-85.046-17.972-190.864-6.4-293.248 1.012-88.639 6.418-146.646 9.473-181.65 4.382-30.933-4.5-56.006-18.33-52.063-76.228 3.633-53.342 25.516-86.246 2.058-140.674C4.777 157.757.446 87.413.044 74.463-1.4 27.793 33.058 24.889 84.6 20.665 138.623 16.237 215.619-3.775 283.284.629c92.412 6.014 194.364 13.926 265.224 18.2 64.745 3.911 81.191-4.5 136.163-9.371 20.963-1.857 61.017 25.576 58.006 59.063-4.57 50.833-30 90.653-10 131.363 28.693 58.4 17 124.235-1 145.619-33.608 39.927-41.93 40.021-78.01 45.83z'; 7 8 9/*----------------------------------------*/ 10 11let $svgBody = Snap("#test01 path"), 12 path =[pathD01,pathD02,pathD03], 13 SPEED =1500, 14 EASING = mina.linear, 15 i = 0; 16 17function AnimationSvg(){ 18 $svgBody.animate({d: path[i] },SPEED,EASING,AnimationSvg); 19 i++; 20 if(i === path.length){ i = 0; } 21} 22 23AnimationSvg(); 24 25/*----------------------------------------*/ 26 27let $svgBody02 = Snap("#test02 path"), 28 path02 =[pathD01,pathD02,pathD03], 29 SPEED02 =1500, 30 EASING02 = mina.linear, 31 i02 = 0; 32 33function AnimationSvg02(){ 34 35 $svgBody02.animate({d: path02[i02] },SPEED02,EASING02,AnimationSvg02); 36 i02++; 37 if(i02 === path02.length){ i02 = 0; } 38} 39 40AnimationSvg02(); 41 42/*----------------------------------------*/ 43 44let $svgBody03 = Snap("#test03 path"), 45 path03 =[pathD01,pathD02,pathD03], 46 SPEED03 =1500, 47 EASING03 = mina.linear, 48 i03 = 0; 49 50function AnimationSvg03(){ 51 $svgBody03.animate({d: path03[i03] },SPEED03,EASING03,AnimationSvg03); 52 i03++; 53 if(i03 === path03.length){ i03 = 0; } 54} 55 56AnimationSvg03(); 57 58/*----------------------------------------*/ 59

参考codepenURL:
https://codepen.io/lisaaaan/pen/BaNxbpj

色々とアドバイスいただきありがとうございました。
とても勉強になりました。

もっといいやり方あるよ!というのがあれば
お教えいただけたら幸いです。

投稿2020/03/18 07:06

lisaaaan

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

残作業

svgタグにclassを書いて(pathはHTLMElemntじゃ無いはず)、let ds = document.querySelectorAll("svg.js-svg-body");すれば行ける気がする

時間切れなので後はやって下さい

途中結果

</svg>で閉じて、idはTest,1,2にする
?Pathのclass書けるんでしたっけ?

CSS

1<div class="wrap"> 2 <svg id="test" width="750" height="400"> 3 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z" /> 4 </svg> 5</div> 6 7<div class="wrap"> 8 <svg id="test1" width="750" height="400"> 9 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z" /> 10 </svg> 11</div> 12 13<div class="wrap"> 14 <svg id="test2" width="750" height="400"> 15 <path x="0" y="0" class="js-svg-body" d="M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z" /> 16 </svg> 17</div>

Snap.svg API Referenceではarrayや
CSS query selectorを受け付けると書いてあったけど、今の所1つしか動かせなかった。
でもds[1]だと2番目が動かせることまでは分かりました。後は誰かよろしく

js

1let ds = document.querySelectorAll("svg path"); 2// let $svgBody = Snap(ds[1]), //2つ目が動く 3// let $svgBody = Snap(ds), //Arrayで渡すとダメ?NodeListではない 4// let $svgBody = Snap(Array.from(ds)), //NodeListではないけど念の為配列化 5// let $svgBody = Snap([...ds]), //NodeListではないけど念の為配列化 6let $svgBody = Snap("svg path"), //1つ目が動く 7 path =['M653.452 394.933c-18.731 4.276-60.67-5.921-84.289-11.759-88.179-21.8-236.886-19.2-338.194 6.414-67.639 17.1-98.764 8.775-132.156 5.345C67.6 391.726.157 369.306 13.484 317.965c20.812-80.175 5.657-125.213-3.121-151.8C3.259 144.656-2.359 111.177 1 98.821c12.487-45.967 54.55-60.744 103.019-80.175 42.665-17.1 106.141-21.38 148.806-17.1 84.9 8.509 192.541 51.993 262.23 21.38C558.855 3.68 646.078 5.773 675.3 20.784c18.731 9.621 74.923 35.277 63.477 94.072-5.211 26.763-9.366 78.037 1.04 103.692 8.5 20.969 12.931 75.144 8.325 94.072-12.483 51.312-56.763 73.655-94.69 82.313z', 8 9'M646.924 390.1c-53.039-5.959-83.193-4.684-107.079 0-85.225 16.715-190.888 8.9-293.215 1-59.013-4.557-87.085-4.1-148.3 5.892-30.836 5.033-86.8-23.782-85.392-76.446 1.517-56.58-13.494-93.329-3.124-150.77C13.817 147.625-2.91 90.5.449 78.23 12.945 32.574 51.9 15.319 103.541 23.251c54.023 8.3 112.066 1.344 180.116-17.527C372.881-19.019 475.77 45.83 548.852 23.6 610.9 4.731 673.718 6.706 702.965 21.616c18.745 9.555 25.5 18.161 33.025 48.668C748 118.952 750 159.674 750 203.376c0 64.123-1.289 78.037-10.007 122.167-10.008 50.657-54.385 68.907-93.069 64.557z', 10 11'M653.667 391.333c-52.723 8.487-79.008 8.146-114.167.716-85.046-17.972-190.864-6.4-293.248 1.012-88.639 6.418-146.646 9.473-181.65 4.382-30.933-4.5-56.006-18.33-52.063-76.228 3.633-53.342 25.516-86.246 2.058-140.674C4.777 157.757.446 87.413.044 74.463-1.4 27.793 33.058 24.889 84.6 20.665 138.623 16.237 215.619-3.775 283.284.629c92.412 6.014 194.364 13.926 265.224 18.2 64.745 3.911 81.191-4.5 136.163-9.371 20.963-1.857 61.017 25.576 58.006 59.063-4.57 50.833-30 90.653-10 131.363 28.693 58.4 17 124.235-1 145.619-33.608 39.927-41.93 40.021-78.01 45.83z'], //変形されたpathを用意する 12 13 SPEED =1500, //アニメーションのスピード調整 14 EASING = mina.linear, //snap.svgに用意されているeasing 15 i = 0; //最初にはじまるpathを定義 16 17 18 19//アニメーションの関数 20function AnimationSvg(){ 21 22 //パスを定義して1秒間動かした後にアニメーションが繰り返される 23 $svgBody.animate({d: path[i] },SPEED,EASING,AnimationSvg); 24 25 //pathの順番をつけかえ 26 i++; 27 28 //もしpathの付け替えで多くなってしまった時初めのかたちに戻る 29 if(i === path.length){ 30 i = 0; //初めのpathに戻る 31 } 32} 33 34//アニメーションスタート 35AnimationSvg(); 36 37 38 39/*-------------------- 40 41【見本】CodePen Home 42Snap svg Animation - Click Action 43A PEN BY Kayoko Hayashi 44 45 46let $svg = $('#js-svg'), //全体を定義 47 $svgMouth = Snap('#js-svg-mouth'), //動かしたい場所を定義 48 pathStart = 'M37.9,61.4c-3.8-0.2-7.1-1.6-9.9-4.2c-0.8-0.7-1.5-1.7-0.5-2.7c0.8-0.8,1.7-0.4,2.5,0.1c2.5,1.8,5.1,2.9,7.7,3.1c2.6,0.2,5.2-0.6,7.8-2.6c0.7-0.6,1.7-0.9,2.5,0c0.7,0.9,0.1,1.7-0.6,2.4C44.7,60,41.6,61.4,37.9,61.4z', //戻した時のpath 49 pathEnd ='M36.9,57.4c-3.8-0.2-6.1,2.4-8.9-0.2c-0.8-0.7-1.5-1.7-0.5-2.7c0.8-0.8,1.7-0.4,2.5,0.1c2.5,1.8,4.1-1.1,6.7-0.9c2.6,0.2,6.2,3.4,8.8,1.4c0.7-0.6,1.7-0.9,2.5,0c0.7,0.9,0.1,1.7-0.6,2.4C44.7,60,40.6,57.4,36.9,57.4z', //動かした後のpath 50 SPEED = 100, //動く速さ, 51 EASING = mina.easeout; //snap.svgに用意されているeasing 52 53//クリッックイベント 54$svg.on('click',(e) =>{ 55 56 //is-activeが付いてるときremoveして元のpathに戻す 57 if($(e.currentTarget).hasClass('is-active')){ 58 $(e.currentTarget).removeClass('is-active'); 59 $svgMouth.animate({d:pathStart},SPEED,EASING); 60 } 61 62 //is-activeが付いてるなかった時is-activeつけてpathを動かす 63 else { 64 $(e.currentTarget).addClass('is-active'); 65 $svgMouth.animate({d:pathEnd},SPEED,EASING); 66 } 67 68}); 69--------------------*/ 70

投稿2020/03/08 12:20

編集2020/03/08 12:46
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lisaaaan

2020/03/09 04:45

早速回答いただきましてありがとうございます。 頂いた回答を元に以下を実行しました。 ①【HTML】</svg>で閉じて、idはTest,1,2にする、svgタグにclassを書く ②【js】let ds = document.querySelectorAll("svg.js-svg-body");する 【HTML】 <div class="wrap"> <svg id="test1" class="js-svg-body" width="750" height="400"> <path x="0" y="0" d=…(以下略) 【js】 let ds = document.querySelectorAll("svg.js-svg-body"); let $svgBody = Snap("svg path"), path =…(以下略) という形に直してみましたが、やはり1番目だけが動き 2番目以降は動かないままのようです…。 codepenここまでの途中経過 https://codepen.io/lisaaaan/pen/poJdxqZ ds[1]だと2番目が動かせるなども教えて頂いたので 本日もうちょっとイジって実験してみます! もしまた追加でわかったことなどあればお教えいただけますと助かりますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問