🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

6838閲覧

javascriptのwheelイベントとmacのトラックパッド操作について

okpk

総合スコア38

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/10/09 02:41

編集2019/10/09 05:58

マウスのホイールで次の要素に切り替わる処理を実装したいのですが、
macのトラックパッドが慣性スクロールをデフォルトの仕様としているため、
強くスクロールすると次々と処理が走ってしまい、うまく制御できません。

javascript

1window.addEventListener("wheel", (event) => { 2 if (event.wheelDeltaY < 0) { 3 console.log("下方向へホイール") 4 } else if (event.wheelDeltaY > 0) { 5 console.log("上方向へホイール") 6 } 7}

このような処理を書いています。
flagで管理してもDeltaYが0になるまでflagを解除出来ないとなると、
かなり時間がかかってしまい操作がしにくい感じがします。

fullpage.js(https://alvarotrigo.com/fullPage/)が理想の挙動なのですが、、。
自作で処理を実装する場合のアドバイスを頂きたいです。。
よろしくお願いいたします。

一回のホイールでifの中の処理が一度動いて欲しい感じになります。
(強くトラックパッドでスクロールすると、deltaYが500くらいから0になるまで走り続けるので、処理が連続して実行されてしまうのを改善したいです。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2019/10/09 05:27

ifの中の処理をもっとゆっくりやりたいってことですよね?
okpk

2019/10/09 05:59

追記させていただきました。 理想としては一度のホイールで一度だけ処理が実行される。というものです。 (macだと慣性スクロールが働くので、すぐにホイールが止まらず連続して処理が実行されてしまうのが課題です。)
guest

回答1

0

ベストアンサー

慣性が止まらない間に連続でホイール操作された場合には検知したいのか、それともしたくないのか、が気になりました。

とりあえず、動作確認できる環境がないので動くかどうかわかりませんが、このようにしてみてはいかがでしょうか。

js

1const wheel = ( ( flag = false, timerId = null) => event => { 2 clearTimeout( timerId ); 3 timerId = setTimeout( () => flag = false, 1000); // 1秒空いたらリセット 4 if (flag) return; 5 6 if (event.wheelDeltaY < 0) { 7 console.log("下方向へホイール") 8 } else if (event.wheelDeltaY > 0) { 9 console.log("上方向へホイール") 10 } 11 flag = true; 12} )(); 13window.addEventListener("wheel", wheel);

投稿2019/10/09 08:25

編集2019/10/09 08:49
Lhankor_Mhy

総合スコア36946

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問