2011-10-14 22 views
7

Estoy trabajando en la escritura de una barra de desplazamiento personalizada y estoy atrapando el evento mousewheel. Estoy usando esto para ajustar el scrollTop del elemento sobre el que quiero desplazarme.¿Cuántos píxeles se desplazan en un sitio web con un evento de rueda hacia abajo del mouse?

¿Hay un número estándar de píxeles desplazados hacia abajo o varía de un sistema a otro?

que estoy mostrando 114px en la última versión de Firefox:

enter image description here

+0

No ha http://mootools.net/forge/p/scrollspy y http://twitter.github.com/bootstrap/javascript. html # scrollspy – CamelCamelCamel

Respuesta

9

Muchos controladores de ratón le permiten establecer la distancia desplazado por la rueda del ratón, así que no hay una distancia estándar. Probé con tu código por un tiempo y escogí una distancia que te impide desplazarte todo el día pero no salta una milla en cada desplazamiento. Necesitarás "sentirlo". Haga amigos para hacer comentarios, ayuda dejar que algunas manos toquen este tipo de cosas.

+0

No creo que los controladores de mouse por sí mismos sean responsables de "la distancia recorrida por la rueda del mouse". Cada evento de la rueda del mouse informa algún ángulo en que se giró la rueda. La traducción de 'WM_MOUSEWHEEL' a' WM_VSCROLL' es una función del subsistema GUI en la parte superior del controlador. –

+0

Creo que @Kirk está tratando de determinar qué tan lejos desplazarse en píxeles, no qué tan lejos se giró la rueda. –

1

Deberá almacenar la posición de desplazamiento actual antes del desplazamiento y luego, cuando detecte un desplazamiento, obtendrá la distancia recorrida que piensa.

2

para Firefox, que tienen el evento MozMousePixelScroll, que indica el número de píxeles que debe desplazarse la visualización en e.detail.

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

Durante muchos otros navegadores, usted tiene el evento mousewheel que informa e.wheelDeltaY, pero no son en píxeles y usted tendrá que adivinar la cantidad a ser desplazado.

también ver cómo maneja SproutCore desplazarse en su propio marco (que están escribiendo su propia visión del movimiento en sentido vertical también): http://blog.sproutcore.com/scrolling-in-sproutcore/

0

Por lo general, cada rueda del ratón "tick" corresponde a un número configurable (por el usuario) de píxeles.

En Windows, por ejemplo, la distancia desplazada por cada rueda del mouse, el clic debe ser una función del parámetro SystemParametersInfo(SPI_GETWHEELSCROLLLINES, ...).

Here puede encontrar más información sobre el tema.

2

He observado que en Google Chrome - que es 100px por desplazamiento del ratón

+0

53px en mi PC, también con Chrome (Ubuntu 12.04 LTS). – Ajedi32

+0

53px aquí también (Ubuntu 14.04). – joeytwiddle

Cuestiones relacionadas