回答編集履歴

1

不具合修正

2017/05/23 14:36

投稿

naomi3
naomi3

スコア1105

test CHANGED
@@ -6,23 +6,53 @@
6
6
 
7
7
  はできていると思います。
8
8
 
9
+
10
+
11
+ これでどうでしょう?
12
+
9
13
  ```JavaScript
10
14
 
11
15
  $(function() {
12
16
 
13
- $(window).scroll(function() {
17
+ $(window).on('scroll', function() {
14
18
 
15
- $('img.fadein').each(function(index) {
19
+ var count = 0; // 今回のスクロールで、遅延フェードインした回数
16
20
 
17
- var position = $(this).offset().top - $(window).height();
21
+ var windowY = $(window).scrollTop() + $(window).height();
18
-
19
- var diff = $(window).scrollTop() - position - 200;
20
22
 
21
23
 
22
24
 
23
- if (diff > 0 && ! $(this).hasClass('transparent')) {
25
+ $('.transparent').each(function() {
24
26
 
27
+ if ($(this).hasClass('fadein')) {
28
+
29
+ return;
30
+
31
+ }
32
+
33
+
34
+
35
+ var diffY = windowY - $(this).offset().top;
36
+
37
+
38
+
39
+ if (diffY > $(this).height()) {
40
+
41
+ // 画像が上すぎるときは、遅延しないでフェードイン
42
+
25
- $(this).addClass('transparent');
43
+ $(this).addClass('fadein');
44
+
45
+ }
46
+
47
+ else if (diffY > 0) {
48
+
49
+ // 遅延フェードインして、次に遅延フェードインする時間を延ばす
50
+
51
+ $(this).delay(count++ * 500).queue(function() {
52
+
53
+ $(this).addClass('fadein');
54
+
55
+ });
26
56
 
27
57
  }
28
58