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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1803閲覧

cssで動かしたsvgアニメーションを可視化された段階で動かす方法

退会済みユーザー

退会済みユーザー

総合スコア0

SVG

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/05/29 05:12

illustratorでsvgファイルを作成し、それをCSSでアニメーションをつけたのですが、
サイトを読み込んだ時点でsvgアニメーションが始まってしまい、スクロールした際にはすでにアニメーションが終わってしまいます。

inview.jsなどもを使ってみたのですが、やはり同じ結果でした。
スクロールして可視化された際にアニメーションを行うのはどうしたらいいでしょうか?
初心者な質問で申し訳ありませんが、ご教授いただけると助かります。

svg

1<svg class="sgwid" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1366px" 2 height="630.063px" viewBox="0 0 1366 630.063" enable-background="new 0 0 1366 630.063" xml:space="preserve"> 3<g id="line2"> 4 <path class="st0 path" fill="none" stroke="#85B1DF" stroke-width="2" stroke-miterlimit="10" d="M-27,215.825c0,0,165.392,193.585,340,276 5 c500,236,870.225,108.336,922-107c44-183-94.979-397.462-342-341c-280,64-284,424-70,528c162.503,78.974,336.154,15.055,433.5-75.5 6 c129-120,180.5-320.5,180.5-320.5"/> 7</g> 8<g id="line1"> 9 <path class="st0 path" fill="none" stroke="#85B1DF" stroke-width="2" stroke-miterlimit="10" d="M-22-4.175c0,0,247.466,576.368,915,621 10 c344,23,524-245,524-245"/> 11</g> 12<g id="gazou"> 13 <image class="grap" overflow="visible" width="773" height="773" xlink:href="image/home/maruphoto01.png" transform="matrix(0.7088 0 0 0.7088 682.3213 41.3877)"> 14 </image> 15</g> 16<g id="maru"> 17 <path class="circle" fill="#D7092F" d="M1022.75,149.733c0,77.551,62.867,140.418,140.418,140.418s140.418-62.867,140.418-140.418 18 c0-77.551-62.867-140.418-140.418-140.418S1022.75,72.182,1022.75,149.733"/> 19</g> 20</svg> 21

SVGはhtml内に記述。

CSS

1 2/* SVGアニメーション用CSS 共通 */ 3.path{ 4 opacity: 1; 5 stroke: #85B1DF; /* アウトライン色 */ 6 fill: none; /* 塗りの色 */ 7 stroke-width:1; /* 線の太さ */ 8 stroke-dasharray: 3000; 9 stroke-dashoffset:3000; 10 animation: DASH 3s ease-in alternate forwards; 11 -webkit-animation:DASH 3s ease-in 0s forwards; 12 -o-animation:DASH 3s ease-in 0s forwards; 13 animation:DASH 3s ease-in 0s forwards; 14} 15 16@keyframes DASH{ 17 0%{stroke-dashoffset:3000;} 18 100%{stroke-dashoffset:0;} 19} 20@-moz-keyframes DASH{ 21 0%{stroke-dashoffset:3000;} 22 100%{stroke-dashoffset:0;} 23} 24@-webkit-keyframes DASH{ 25 0%{stroke-dashoffset:3000;} 26 100%{stroke-dashoffset:0;} 27} 28@-o-keyframes DASH{ 29 0%{stroke-dashoffset:3000;} 30 100%{stroke-dashoffset:0;} 31} 32@-ms-keyframes DASH{ 33 0%{stroke-dashoffset:3000;} 34 100%{stroke-dashoffset:0;} 35} 36 37 38.grap { 39 animation: fadeIn 3s ease 2s 1 forwards; /* 長さ タイミング いつ始まるか 繰り返し数 保持*/ 40 opacity: 0; 41} 42 43.circle { 44 animation: fadeIn 2s ease 2.2s 1 forwards; /* 長さ タイミング いつ始まるか 繰り返し数 保持*/ 45 opacity: 0; 46} 47 48.inner { 49 animation: fadeIn 2s ease 3s 1 forwards; /* 長さ タイミング いつ始まるか 繰り返し数 保持*/ 50 opacity: 0; 51} 52 53@keyframes fadeIn { 54 0% {opacity: 0} 55 100% {opacity: 0.9} 56} 57

他に必要な情報があれば記載します。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

「可視範囲 アニメ」とかでググるといろいろヒットします
たとえば

投稿2019/05/29 05:21

yambejp

総合スコア114843

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

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

退会済みユーザー

退会済みユーザー

2019/05/29 05:26

ご回答ありがとうございます! 私もこのサイトは拝見したのですが、この場合だとsvgをjavascript内に書き直す感じになるのでしょうか?
guest

0

ベストアンサー

inview.jsで対象要素がウィンドウに入ったときにSVGに対して
アニメーション処理を書いたクラスを付与してあげるとよいのではないでしょうか?

javascript

1$(function() { 2 $('.sgwid').on('inview', function(event, isInView) { 3 if (isInView) { 4 //表示領域に入った時 5 $(this).addClass('animation-start'); 6 } 7 }); 8});

css

1.sgwid.animation-satrt .path{ 2 opacity: 1; 3 stroke: #85B1DF; /* アウトライン色 */ 4 fill: none; /* 塗りの色 */ 5 stroke-width:1; /* 線の太さ */ 6 stroke-dasharray: 3000; 7 stroke-dashoffset:3000; 8 animation: DASH 3s ease-in alternate forwards; 9 -webkit-animation:DASH 3s ease-in 0s forwards; 10 -o-animation:DASH 3s ease-in 0s forwards; 11 animation:DASH 3s ease-in 0s forwards; 12} 13 14.sgwid.animation-satrt .grap { 15~~~

投稿2019/05/29 06:10

Yoh

総合スコア94

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

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

退会済みユーザー

退会済みユーザー

2019/05/29 06:28

ご回答ありがとうございます! この方法がいいなぁと思ったのですが、入れてみたところアニメーションが動かなくなってしまいました…。 いただいた通りhtmlにjavascriptを、cssには[.sgwid.animation-start .path~]を追加してあります。 <script> $(function() { $('.sgwid').on('inview', function(event, isInView) { if (isInView) { //表示領域に入った時 $(this).addClass('animation-start'); } }); }); </script> /* SVGアニメーション用CSS 共通 */ .sgwid.animation-start .path { opacity: 1; stroke: #85B1DF; /* アウトライン色 */ fill: none; /* 塗りの色 */ stroke-width:1; /* 線の太さ */ stroke-dasharray: 3000; stroke-dashoffset:3000; animation: DASH 3s ease-in alternate forwards; -webkit-animation:DASH 3s ease-in 0s forwards; -o-animation:DASH 3s ease-in 0s forwards; animation:DASH 3s ease-in 0s forwards; } 難しいです( ;∀;)
Yoh

2019/05/29 07:48 編集

検証しておらずすみません、、 SVGタグに対して直接addClassできないみたいですね。。 【HTML】 <div class="svg-wrapper"> <svg>~~</svg> </div> として 【JS】 $(document).ready(function() { $('.svg-wrapper').bind('inview', function(event, visible) { if (visible) { //表示領域に入った時 $(this).addClass('animation-start'); } }); }); 【CSS】 .animation-start .path{ ~~~ } のようにSVGをラップするものがあれば正常に動くみたいでした。 ただし、 アニメーションスタート前に描画完了後の状態が一瞬見えてしまっている状態になるので .path { stroke-dashoffset:0; opacity: 0; } .grap, .circle { opacity: 0; } このような感じで初期状態では表示を隠しておく必要がありそうです。
退会済みユーザー

退会済みユーザー

2019/05/29 07:50

いただいたコードで無事に動きました!! なかなかできずに慌てていたので、とても嬉しいです( ;∀;) ご丁寧にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問