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

質問編集履歴

2

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

2021/09/24 00:36

投稿

waon
waon

スコア17

title CHANGED
File without changes
body CHANGED
@@ -84,4 +84,62 @@
84
84
 
85
85
  スクロール中もスクロール量の値は随時変動しているのは見れたのですが、.color_のクラスが付与、切り替わるタイミングは、スクロールが止まった時に「300で割り切れた場合のみ」でした。要は、自分が書いているスクリプトが「スクロールが止まった時点で行われる」ということは認識しております。
86
86
 
87
- なので、リアルタイムにそれを処理する方法があるのかと思い、その解決策があればご教示いただきたい次第です。
87
+ なので、リアルタイムにそれを処理する方法があるのかと思い、その解決策があればご教示いただきたい次第です。
88
+
89
+
90
+ ●追記 21/09/24 09:24
91
+ m.ts10806さんにご教示いただいた内容を元に、「直前のscrollTopの位置」と「現在のスクロールの位置」を比較して、上下の判定を行い、カウントをアップ/ダウンさせるスクリプトを書いてみました。
92
+
93
+ ```javascript
94
+ var posBefore;
95
+ var posAfter;
96
+ var current;
97
+ var count = 1;
98
+ var color = 1;
99
+
100
+ posBefore = $(window).scrollTop();
101
+
102
+ $(document).on("scroll",$(window),function(){
103
+ posAfter = $(this).scrollTop();
104
+
105
+ // スクロール開始位置がスクロール後より大きい
106
+ if (posAfter < posBefore) {
107
+ console.log('うえ'); /* チェック用 */
108
+ current = (posAfter * 300);
109
+
110
+ if (color > 1) {
111
+ $('#logo').removeClass().addClass('color_' + color);
112
+ color--;
113
+ }
114
+ else if(color == 1) {
115
+ $('#logo').removeClass().addClass('color_' + color);
116
+ color=7;
117
+ }
118
+ // スクロール開始位置がスクロール後より小さい
119
+ }else{
120
+ console.log('した'); /* チェック用 */
121
+ current = (posAfter * 300);
122
+
123
+ if (color < 7) {
124
+ $('#logo').removeClass().addClass('color_' + color);
125
+ color++;
126
+ }
127
+ else if(color == 7) {
128
+ $('#logo').removeClass().addClass('color_' + color);
129
+ color=1;
130
+ }
131
+
132
+ }
133
+
134
+ //開始位置をスクロール後の位置に書き換える
135
+ posBefore = posAfter;
136
+ });
137
+ ```
138
+
139
+ ただし、ご教示いただいた内容のうち、以下部分が理解できておらず、
140
+
141
+ ```javascript
142
+ current = (count * 300);
143
+ ```
144
+
145
+ 上下にスクロールさせる際、スクロール量の増減、color_の増減は出来ているっぽいのですが、300pxごとの変化が出来ず、もっと狭いスパンでcolor_の値が変化していってる状態でした。。

1

確認方法について追記

2021/09/24 00:36

投稿

waon
waon

スコア17

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,19 @@
69
69
 
70
70
 
71
71
  これをどう解決すればいいのか、ご教示いただけると幸いです。
72
- よろしくお願いいたします。
72
+ よろしくお願いいたします。
73
+
74
+
75
+ ●追記
76
+
77
+ 上記の確認方法についてですが、
78
+
79
+ ・chomeで上記コードを記述したページを表示
80
+ ・Windows環境で、F12ボタン→開発者ツールを開いてコードが変わる様子を監視
81
+ ・スクリプトに、$('p').text(scroll); を追加して、スクロール量を画面にリアルタイムで表示させるようにした
82
+
83
+ という環境でおこないました。
84
+
85
+ スクロール中もスクロール量の値は随時変動しているのは見れたのですが、.color_のクラスが付与、切り替わるタイミングは、スクロールが止まった時に「300で割り切れた場合のみ」でした。要は、自分が書いているスクリプトが「スクロールが止まった時点で行われる」ということは認識しております。
86
+
87
+ なので、リアルタイムにそれを処理する方法があるのかと思い、その解決策があればご教示いただきたい次第です。