回答編集履歴

2

コメントを受けて追記

2021/06/04 09:40

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36960

test CHANGED
@@ -131,3 +131,213 @@
131
131
 
132
132
 
133
133
  ```
134
+
135
+
136
+
137
+ ---
138
+
139
+
140
+
141
+ # コメントを受けて追記
142
+
143
+
144
+
145
+ 失礼ながら、コードのみ追記します。
146
+
147
+
148
+
149
+ ```js
150
+
151
+ window.onload = function () {
152
+
153
+ setTimeout(() => {
154
+
155
+ const spinner = document.getElementById('loading');
156
+
157
+ spinner.classList.add('loaded');
158
+
159
+ boxShow();
160
+
161
+ MovieShow();
162
+
163
+ $(window).on('scroll', function () { boxShow(); });
164
+
165
+ $(window).on('scroll', function () { MovieShow(); });
166
+
167
+ }, 3000);
168
+
169
+ }
170
+
171
+ function boxShow() {
172
+
173
+ var elem = $('.boxInner');
174
+
175
+ elem.each(function () {
176
+
177
+ var isPlay = 'isPlay';
178
+
179
+ var elemOffset = $(this).offset().top;
180
+
181
+ var scrollPos = $(window).scrollTop();
182
+
183
+ var wh = $(window).height();
184
+
185
+ if (scrollPos > elemOffset - wh + (wh / 10)) {
186
+
187
+ $(this).addClass(isPlay);
188
+
189
+ }
190
+
191
+ });
192
+
193
+ }
194
+
195
+
196
+
197
+ function MovieShow() {
198
+
199
+ var elem = $('.isMovie');
200
+
201
+ elem.each(function () {
202
+
203
+ $(this).attr("class", "mask2");
204
+
205
+ new Vivus('move', {
206
+
207
+ type: 'oneByOne',
208
+
209
+ start: 'inViewport',
210
+
211
+ duration: 180,
212
+
213
+ forceRender: false,
214
+
215
+ animTimingFunction: Vivus.LINEAR,
216
+
217
+ }, () => {
218
+
219
+ box1Show();
220
+
221
+ box2Show();
222
+
223
+ box3Show();
224
+
225
+ box4Show();
226
+
227
+ box5Show();
228
+
229
+
230
+
231
+ });
232
+
233
+ });
234
+
235
+ }
236
+
237
+ function box1Show() {
238
+
239
+ setTimeout(() => {
240
+
241
+ var elem = $('.img1');
242
+
243
+ elem.each(function () {
244
+
245
+ var isPlay = 'isPlay';
246
+
247
+ $(this).addClass(isPlay);
248
+
249
+ });
250
+
251
+ }, 200);
252
+
253
+ }
254
+
255
+ function box2Show() {
256
+
257
+ setTimeout(() => {
258
+
259
+ var elem = $('.img2');
260
+
261
+ elem.each(function () {
262
+
263
+ var isPlay = 'isPlay';
264
+
265
+ $(this).addClass(isPlay);
266
+
267
+ });
268
+
269
+ }, 400);
270
+
271
+ }
272
+
273
+ function box3Show() {
274
+
275
+ setTimeout(() => {
276
+
277
+ var elem = $('.img3');
278
+
279
+ elem.each(function () {
280
+
281
+ var isPlay = 'isPlay';
282
+
283
+ $(this).addClass(isPlay);
284
+
285
+ });
286
+
287
+ }, 600);
288
+
289
+ }
290
+
291
+ function box4Show() {
292
+
293
+ setTimeout(() => {
294
+
295
+ var elem = $('.img4');
296
+
297
+ elem.each(function () {
298
+
299
+ var isPlay = 'isPlay';
300
+
301
+ $(this).addClass(isPlay);
302
+
303
+ });
304
+
305
+ }, 800);
306
+
307
+ }
308
+
309
+ function box5Show() {
310
+
311
+ setTimeout(() => {
312
+
313
+ var elem = $('.img5');
314
+
315
+ elem.each(function () {
316
+
317
+ var isPlay = 'isPlay';
318
+
319
+ $(this).addClass(isPlay);
320
+
321
+ });
322
+
323
+ }, 1000);
324
+
325
+ }
326
+
327
+
328
+
329
+ new Vivus('movie', {
330
+
331
+ type: 'oneByOne',
332
+
333
+ start: 'inViewport',
334
+
335
+ duration: 180,
336
+
337
+ forceRender: false,
338
+
339
+ animTimingFunction: Vivus.LINEAR,
340
+
341
+ });
342
+
343
+ ```

1

コメントを受けて追記

2021/06/04 09:40

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36960

test CHANGED
@@ -15,3 +15,119 @@
15
15
 
16
16
 
17
17
  ビューポート内にあるかどうかの判定と、表示部分の処理を、同じループで書いていますが、これを別のループにするのがいいでしょう。
18
+
19
+
20
+
21
+ ---
22
+
23
+
24
+
25
+ # コメントを受けて追記
26
+
27
+
28
+
29
+ 大幅にコードを変えてしまって申し訳ないのですが、こちらはいかがでしょうか。
30
+
31
+
32
+
33
+ ```js
34
+
35
+ window.onload = function () {
36
+
37
+ setTimeout(() => {
38
+
39
+ const spinner = document.getElementById('loading');
40
+
41
+ spinner.classList.add('loaded');
42
+
43
+ boxShow();
44
+
45
+ box_Show();
46
+
47
+ $(window).on('scroll', function () {
48
+
49
+ boxShow();
50
+
51
+ });
52
+
53
+ $(window).on('scroll', function () {
54
+
55
+ box_Show();
56
+
57
+ });
58
+
59
+ }, 3000);
60
+
61
+ }
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+ function boxShow() {
70
+
71
+ var box = $('.box');
72
+
73
+ var isPlay = 'isPlay';
74
+
75
+ box.each(function () {
76
+
77
+ var boxOffset = $(this).offset().top;
78
+
79
+ var scrollPos = $(window).scrollTop();
80
+
81
+ var wh = $(window).height();
82
+
83
+ if (scrollPos > boxOffset - wh + (wh / 10)) {
84
+
85
+ $(this).addClass('isPlay');
86
+
87
+ } else {
88
+
89
+ }
90
+
91
+ });
92
+
93
+ }
94
+
95
+
96
+
97
+ function box_Show() {
98
+
99
+ setTimeout(() => {
100
+
101
+ var scrollTop = $(this).scrollTop();
102
+
103
+ var scrollBottom = scrollTop + $(this).height();
104
+
105
+ $(".img").each(function (i) {
106
+
107
+ var boxOffset = $(this).offset().top;
108
+
109
+ var scrollPos = $(window).scrollTop();
110
+
111
+ var wh = $(window).height();
112
+
113
+ if (scrollPos > boxOffset - wh + (wh / 10)) {
114
+
115
+ var target = this;
116
+
117
+ setTimeout(function () {
118
+
119
+ $(target).addClass("isPlay");
120
+
121
+ }, 100 * i);
122
+
123
+ }
124
+
125
+ });
126
+
127
+ }, 300);
128
+
129
+ }
130
+
131
+
132
+
133
+ ```