質問編集履歴

2

回答いただいた内容を元に、新しいスクリプトを追記

2021/09/24 00:36

投稿

waon
waon

スコア17

test CHANGED
File without changes
test CHANGED
@@ -171,3 +171,119 @@
171
171
 
172
172
 
173
173
  なので、リアルタイムにそれを処理する方法があるのかと思い、その解決策があればご教示いただきたい次第です。
174
+
175
+
176
+
177
+
178
+
179
+ ●追記 21/09/24 09:24
180
+
181
+ m.ts10806さんにご教示いただいた内容を元に、「直前のscrollTopの位置」と「現在のスクロールの位置」を比較して、上下の判定を行い、カウントをアップ/ダウンさせるスクリプトを書いてみました。
182
+
183
+
184
+
185
+ ```javascript
186
+
187
+ var posBefore;
188
+
189
+ var posAfter;
190
+
191
+ var current;
192
+
193
+ var count = 1;
194
+
195
+ var color = 1;
196
+
197
+
198
+
199
+ posBefore = $(window).scrollTop();
200
+
201
+
202
+
203
+ $(document).on("scroll",$(window),function(){
204
+
205
+ posAfter = $(this).scrollTop();
206
+
207
+
208
+
209
+ // スクロール開始位置がスクロール後より大きい
210
+
211
+ if (posAfter < posBefore) {
212
+
213
+ console.log('うえ'); /* チェック用 */
214
+
215
+ current = (posAfter * 300);
216
+
217
+
218
+
219
+ if (color > 1) {
220
+
221
+ $('#logo').removeClass().addClass('color_' + color);
222
+
223
+ color--;
224
+
225
+ }
226
+
227
+ else if(color == 1) {
228
+
229
+ $('#logo').removeClass().addClass('color_' + color);
230
+
231
+ color=7;
232
+
233
+ }
234
+
235
+ // スクロール開始位置がスクロール後より小さい
236
+
237
+ }else{
238
+
239
+ console.log('した'); /* チェック用 */
240
+
241
+ current = (posAfter * 300);
242
+
243
+
244
+
245
+ if (color < 7) {
246
+
247
+ $('#logo').removeClass().addClass('color_' + color);
248
+
249
+ color++;
250
+
251
+ }
252
+
253
+ else if(color == 7) {
254
+
255
+ $('#logo').removeClass().addClass('color_' + color);
256
+
257
+ color=1;
258
+
259
+ }
260
+
261
+
262
+
263
+ }
264
+
265
+
266
+
267
+ //開始位置をスクロール後の位置に書き換える
268
+
269
+ posBefore = posAfter;
270
+
271
+ });
272
+
273
+ ```
274
+
275
+
276
+
277
+ ただし、ご教示いただいた内容のうち、以下部分が理解できておらず、
278
+
279
+
280
+
281
+ ```javascript
282
+
283
+ current = (count * 300);
284
+
285
+ ```
286
+
287
+
288
+
289
+ 上下にスクロールさせる際、スクロール量の増減、color_の増減は出来ているっぽいのですが、300pxごとの変化が出来ず、もっと狭いスパンでcolor_の値が変化していってる状態でした。。

1

確認方法について追記

2021/09/24 00:36

投稿

waon
waon

スコア17

test CHANGED
File without changes
test CHANGED
@@ -141,3 +141,33 @@
141
141
  これをどう解決すればいいのか、ご教示いただけると幸いです。
142
142
 
143
143
  よろしくお願いいたします。
144
+
145
+
146
+
147
+
148
+
149
+ ●追記
150
+
151
+
152
+
153
+ 上記の確認方法についてですが、
154
+
155
+
156
+
157
+ ・chomeで上記コードを記述したページを表示
158
+
159
+ ・Windows環境で、F12ボタン→開発者ツールを開いてコードが変わる様子を監視
160
+
161
+ ・スクリプトに、$('p').text(scroll); を追加して、スクロール量を画面にリアルタイムで表示させるようにした
162
+
163
+
164
+
165
+ という環境でおこないました。
166
+
167
+
168
+
169
+ スクロール中もスクロール量の値は随時変動しているのは見れたのですが、.color_のクラスが付与、切り替わるタイミングは、スクロールが止まった時に「300で割り切れた場合のみ」でした。要は、自分が書いているスクリプトが「スクロールが止まった時点で行われる」ということは認識しております。
170
+
171
+
172
+
173
+ なので、リアルタイムにそれを処理する方法があるのかと思い、その解決策があればご教示いただきたい次第です。