2011-10-14 10 views
7

Sto lavorando alla scrittura di una barra di scorrimento personalizzata e sto recuperando l'evento della rotellina del mouse. Lo sto usando per regolare la scrollTop dell'elemento su cui voglio scorrere.Quanti pixel vengono fatti scorrere su un sito Web con un evento rotellina del mouse?

C'è un numero standard di pixel che scorre verso il basso o varia da sistema a sistema?

sto mostrando 114px nella ultima build di Firefox:

enter image description here

+0

C'è http://mootools.net/forge/p/scrollspy e http://twitter.github.com/bootstrap/javascript. html # scrollspy – CamelCamelCamel

risposta

9

Molti driver del mouse consentono di impostare la distanza dal scorrere la rotellina del mouse, quindi non c'è una distanza standard. Proverei il tuo codice per un po 'e sceglierò una distanza che ti impedisca di scorrere tutto il giorno ma non salti un miglio ad ogni scroll. Avrai bisogno di "sentirlo". Chiedi ai tuoi amici di dare un feedback, aiuta a lasciare che alcune mani tocchino questo genere di cose.

+0

Non penso che i driver del mouse siano di per sé responsabili della "distanza percorsa dalla rotellina del mouse". Ogni evento della rotellina del mouse riporta un angolo della ruota che è stata ruotata. La conversione di 'WM_MOUSEWHEEL' in' WM_VSCROLL' è una funzione del sottosistema GUI in cima al driver. –

+0

Penso che @Kirk stia cercando di determinare fino a che punto scorrere in pixel, non quanto è stata ruotata la ruota. –

1

È necessario memorizzare la posizione di scorrimento corrente prima dello scorrimento e quindi quando si rileva una pergamena, la distanza percorsa mi viene in mente.

0

Possiamo controllare usando javascript. Vedere sotto il collegamento. Spero ti possa aiutare.

http://deepport.net/archives/javascript-scrolling/

+0

Sembra che tu abbia impostato su 5px * il valore delta dall'evento della rotellina del mouse. –

2

Per Firefox, si ha l'evento MozMousePixelScroll, che riporta il numero di pixel che da scorrere in e.detail.

window.addEventListener('MozMousePixelScroll', function(e) { 
    console.log(e.detail); 
}); 

Per molti altri browser, si ha l'evento mousewheel che riporta e.wheelDeltaY, ma non sono in pixel e si dovrà indovinare l'importo da scorrere.

Come vedi anche SproutCore gestisce lo scorrimento nel proprio quadro (che stanno scrivendo la propria visione di scorrimento troppo): http://blog.sproutcore.com/scrolling-in-sproutcore/

0

Di solito ogni ruota del mouse "tick" corrisponde a un certo configurabile (dall'utente) il numero di pixel.

In Windows, ad esempio distanza scorrere da ciascuna ruota click del mouse dovrebbe essere una funzione della SystemParametersInfo(SPI_GETWHEELSCROLLLINES, ...) parametro.

Here è possibile trovare maggiori informazioni sull'argomento.

2

Ho notato che in Google Chrome - che è 100px per scorrimento del mouse

+0

53px sul mio PC, anche con Chrome (Ubuntu 12.04 LTS). – Ajedi32

+0

53px anche qui (Ubuntu 14.04). – joeytwiddle

Problemi correlati