teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

情報の追加

2020/09/07 13:26

投稿

momoko_888
momoko_888

スコア2

title CHANGED
File without changes
body CHANGED
@@ -51,7 +51,7 @@
51
51
  });
52
52
  });
53
53
  ```
54
- 上記scriptだと、1番最初の.svgしかアニメーションしません。
54
+ 上記scriptだと、1番最初の.svgしかアニメーションしません。(2回目以降、flgがtrueになってるため、if文の条件に当てはまらなくなっている?)
55
55
 
56
56
  ```javascript
57
57
  $(function() {

3

コードの修正

2020/09/07 13:26

投稿

momoko_888
momoko_888

スコア2

title CHANGED
File without changes
body CHANGED
@@ -21,10 +21,13 @@
21
21
  ```
22
22
  ```Javascript
23
23
  $(function() {
24
- var target = $(".svg").offset().top;
24
+ var target = $(".svg").offset().top; //---(1)
25
- var windowHeight = $(window).height();
25
+ var windowHeight = $(window).height(); //---(2)
26
- var flg = false;
26
+ var flg = false; //---(3)
27
+ var scrolltop = 0; //---(4)
28
+ var startPoint = 0; //---(5)
27
29
 
30
+ //(6)
28
31
  var mySVG = $('.svg').drawsvg({
29
32
  duration:2000,
30
33
  stagger:100,
@@ -32,23 +35,18 @@
32
35
  reverse:false
33
36
  });
34
37
 
38
+ //(7)
35
39
  $(window).on('scroll resize',function(){
36
- $(window).scroll(function (){
37
- $(".svg").each(function(){
40
+ $(".svg").each(function(){
38
-
39
- var imgPos = $(this).offset().top + 30;
40
- var scroll = $(window).scrollTop();
41
+ scrolltop = $(window).scrollTop();
41
- var windowHeight = $(window).height();
42
+ windowHeight = $(window).height();
42
-
43
- if (scroll > imgPos - windowHeight + windowHeight/5){
43
+ startPoint = scrolltop + windowHeight - 100;
44
+ if(startPoint > target){
44
- if(flg==false){
45
+ if(flg==false){
45
- $(this).drawsvg('animate');
46
+ $(this).drawsvg('animate');
46
- $(this).addClass('test');//検証用
47
- flg = true;
47
+ flg = true;
48
- }
49
48
  }
50
-
51
- });
49
+ }
52
50
  });
53
51
  });
54
52
  });
@@ -57,10 +55,13 @@
57
55
 
58
56
  ```javascript
59
57
  $(function() {
60
- var target = $(".svg").offset().top;
58
+ var target = $(".svg").offset().top; //---(1)
61
- var windowHeight = $(window).height();
59
+ var windowHeight = $(window).height(); //---(2)
62
- var flg = false;
60
+ var flg = false; //---(3)
61
+ var scrolltop = 0; //---(4)
62
+ var startPoint = 0; //---(5)
63
63
 
64
+ //(6)
64
65
  var mySVG = $('.svg').drawsvg({
65
66
  duration:2000,
66
67
  stagger:100,
@@ -68,24 +69,20 @@
68
69
  reverse:false
69
70
  });
70
71
 
72
+ //(7)
71
73
  $(window).on('scroll resize',function(){
72
- $(window).scroll(function (){
73
- $(".svg").each(function(){
74
+ $(".svg").each(function(){
75
+ scrolltop = $(window).scrollTop();
76
+ windowHeight = $(window).height();
77
+ startPoint = scrolltop + windowHeight - 100;
78
+ if(startPoint > target){
79
+ $(this).drawsvg('animate');//検証
74
80
 
75
- var imgPos = $(this).offset().top + 30;
76
- var scroll = $(window).scrollTop();
77
- var windowHeight = $(window).height();
78
-
79
- if (scroll > imgPos - windowHeight + windowHeight/5){
80
-               $(this).drawsvg('animate');
81
- // if(flg==false){
81
+ // if(flg==false){
82
- // $(this).drawsvg('animate');
82
+ // $(this).drawsvg('animate');
83
- // $(this).addClass('test');
84
- // flg = true;
83
+ // flg = true;
85
- // }
84
+ // }
86
- }
85
+ }
87
-
88
- });
89
86
  });
90
87
  });
91
88
  });

2

タイトルの修正

2020/09/07 13:24

投稿

momoko_888
momoko_888

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- jQuery DrawSVG:スクロール可視範囲に入るとアニメーションさせたい
1
+ jQuery DrawSVG:複数あるSVGをスクロールして可視範囲に入ったタイミングでアニメーションさせたい
body CHANGED
File without changes

1

情報の追加

2020/09/07 12:59

投稿

momoko_888
momoko_888

スコア2

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  希望の動きとして、1ページ内に複数あるSVGをスクロールして可視範囲に入ったタイミングでアニメーションさせたいです。
3
3
 
4
4
  参考にしたサイト:https://stand-4u.com/web/javascript/drawsvg.html
5
-
5
+ (ターゲットが見える位置までスクロールしてから、一度だけsvg アニメーションを実行する方法)
6
6
  ```html
7
7
  <div class="box">
8
8
  <svg class="svg">略</svg>