実現したいこと
yahooのページで、ページ内画像をドラッグしながら、ページ下部に持っていくと自動的に下にスクロールします。
しかし、スクロールを開始するエリアは限定的で、ページ下部ギリギリまでドラッグしないと、スクロールしません。
私が作成したページでは、スクロールを自動で開始するエリアを広げたいです。
ページ下部20%ぐらいのエリアにドラッグしたら、ドラッグしたまま下にスクロールさせるようにしたいです。
どのようにすれば実現できるでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2019/06/12 01:29

回答2件
0
間違いのご指摘があったので検証するまでいったん削除します。
誤りがあったので削除します。
drag
イベントを使えばいい……と思ったのですが、試してみるとマウス位置が検出されないみたいです。
Document: drag イベント - Web API | MDN
なので、透明な要素をスクリーン下部に用意して、dragenter
イベントを拾ってスクロールさせる、というやり方が無難なような気がします。
Document: dragenter event - Web APIs | MDN
追記
drag
イベントを検出したらmousemove
イベントでマウス位置を拾う、という合わせ技を思いつきました。
Element: mousemove event - Web APIs | MDN
追記
dragenter
イベントを使う方法もそれほど筋は悪くない、と思いなおしたので、サンプルを作成しました。
サンプル
js
1var f = false; 2var scroll = function(){ 3 scrollBy(0,1); 4 if (f) var id = requestAnimationFrame(scroll); 5} 6var scrollArea = document.getElementById('scrollArea'); 7scrollArea.addEventListener('dragenter', function(){ 8 f = true; 9 scroll(); 10}); 11scrollArea.addEventListener('dragleave', function(){ 12 f = false; 13});
html
1<img src="http://placehold.jp/150x150.png?text=" draggable> 2<div id="scrollArea"> 3 4</div>
css
1body { 2 height: 2000px; 3} 4 5#scrollArea { 6 position: fixed; 7 height: 20vh; 8 bottom: 0; 9 width: 100%; 10 background: gray; 11}
投稿2019/06/12 02:57
編集2019/06/12 04:35総合スコア37408
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/12 03:14
2019/06/12 03:35
2019/06/12 05:39 編集

退会済みユーザー
2019/06/12 05:59

0
ベストアンサー
dragover があります。
https://developer.mozilla.org/ja/docs/Web/API/Document/dragover_event
スクロール領域が div 要素だとして(適宜変更してください)。
CSS
1div { 2 max-height: 70vh; 3 overflow-y: scroll; 4 scroll-behavior: smooth; 5}
jQuery
1$('div').on('dragover', function(event) { 2 var div = event.currentTarget; 3 var rect = div.getBoundingClientRect(); 4 var ratio = (event.clientY - rect.top) / (rect.bottom - rect.top); 5 if (ratio >= 0.8) { 6 div.scrollTop += 100 * (ratio - 0.6); 7 } 8});
ただし、あまり頻繁には発生しないようで、カクツク感じは否めないです。
投稿2019/06/12 02:51
総合スコア13749
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2019/06/12 03:54

退会済みユーザー
2019/06/12 05:54

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。