ユーザーがdivの上部にスクロールすると、スクロールバーを数px押し下げようとしています。問題は、スクロールが数px(上にスクロールした後)に押し下げられた後でも、マウスがまだクリックされているとき(マウスを下にして)、ブラウザがまだ私のマウスがdivの先頭にあると考えていることです。コードが発火し続けるので、これは悪いことです。私が達成しようとしていますdivのJavaScriptスクロールの問題?
特長:
スクロールはdiv要素の先頭にスクロールを数ピクセルを押し下げますが、機能は私のマウスがまだある場合でも、再起動しません。マウスダウン。
私がonscroll
によって機能を検出した方法かもしれないと思います。私のコードをテストして、意味が分からない場合はconsole.log()
を参照してください。コメントで述べたように
var wrapper = document.getElementById('scroll-box');
wrapper.onscroll = function (evt){
//detect when scroll has reached the top of the frame
if(wrapper.scrollTop === 0){
console.log('top of frame');
wrapper.scrollTop += 500;
}
//detect when scroll has reached the bottom of the frame
if(wrapper.scrollHeight - wrapper.scrollTop === wrapper.clientHeight){
console.log('bottom of frame');
}
}
wrapper.scrollTop += 3000;
.scroll-box {
width: 400px;
height: 300px;
background-color: gray;
overflow-y: scroll;
}
div ul li {
padding: 50px;
}
<div class="scroll-box" id="scroll-box">
<ul>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
<li>messages</li>
</ul>
</div>
あなたは何をしたいですか? コードが正常に実行され、コンソールに値が表示されます。 –
マウスを押し下げてdivの上部にドラッグすると、スクロールが期待通りにプッシュダウンされますが、ブラウザーはスクロールがマウスの下のdivの上部にあると考えています。 console.log( 'top of frame')を通して見ることができます。例えば、上にスクロールし、マウスを上または下に少し動かすと、コンソールにはconsole.log( 'top of frame')が塗りつぶされます。スクロールが既に押し下げられていても – jdogdvr
マウスがスクロールバー以外のものになっているかどうかを確認して確認できます。他の何かにスクロールバーとマウスがダウンしている場合は、デフォルトのスクロールイベントを防止するだけですか?これは理にかなっていますか? – www139