Sto provando a spingere la barra di scorrimento di alcuni px quando l'utente scorre verso la parte superiore del div. Il problema è che dopo che lo scroll è stato premuto per alcuni pixel (dopo averlo fatto scorrere verso l'alto) il browser pensa ancora che il mio mouse sia in cima al div quando il mio mouse è ancora cliccato (sul mouse). Questo è un male dato che il codice continua a sparare.Problema di scorrimento JavaScript in div?
Caratteristiche io sto cercando di realizzare:
scorrere fino all'inizio del div
scorrimento viene spinto giù un paio di pixel, ma la funzione non si accende di nuovo, anche se il mio mouse è ancora sul mouse verso il basso
Penso che potrebbe essere il modo in cui ho rilevato la funzione tramite onscroll
. Si prega di testare il mio codice e vedere il console.log()
se non ho senso.
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>
cosa vuoi fare ..? codice in esecuzione e valore visualizzato in console. –
se si tiene premuto il mouse verso il basso e lo si trascina nella parte superiore del div, lo scroll viene spostato verso il basso come previsto, ma il browser continua a pensare che lo scroll si trovi nella parte superiore del div al passaggio del mouse. puoi vederlo attraverso il file console.log ('top of frame'). Ad esempio, scorrere verso l'alto e spostare il mouse leggermente verso l'alto o il basso e la console viene riempita da console.log ('top of frame'); anche quando il rotolo è già stato premuto. – jdogdvr
Si può controllare e vedere se il mouse è inattivo su qualsiasi cosa eccetto la barra di scorrimento; se si trova su qualcosa di diverso, la barra di scorrimento e il mouse sono in basso, basta impedire l'evento di scorrimento predefinito? Ha senso ciò? – www139