上にスクロールすると要素を表示・下にスクロールすると要素を消すスクリプト
javascript
1$(window).on("load", function () { 2 const div = $(".element"); 3 let before = $(window).scrollTop(); 4 $(window).on("scroll touchmove", function () { 5 let after = $(window).scrollTop(); 6 if (before > after) { 7 div.show(200); 8 } else if (before < after) { 9 div.hide(200); 10 } 11 before = after; 12 }); 13});
このコードですと、スクロールしている間は毎度hide()
やshow()
メソッドが呼ばれることになりますよね?
slideToggle()
などを使った場合は恐ろしいことになってしまいます。
また、スマホの場合、指の動き的にスクロールした際に最後だけちょっと逆方向にスワイプしてしまうことがよくあると思います。(表現が下手で申し訳ないです。)
指をスワイプさせたときに、指を定位置に戻すので、その動きがちょっと検出されちゃうようです。
なので、上記スクリプトの場合、スマホで下スクロールしても上スクロールの処理がされてしまうことが頻繁にあります。
- スクロール中に何度も処理が繰り返されるのを何とかしたい
- スマホでの挙動を安定させたい
上記2点が知りたいです。
解決策等ありましたらお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/20 08:45