Ver Mensaje Individual
  #15 (permalink)  
Antiguo 22/09/2015, 16:03
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Por qué no me funciona el scrollTop?

Una manera de hacer esto consiste en guardar la posición anterior del scroll y la nueva por cada vez que se produzca el evento —que es más o menos lo que has venido haciendo—, luego, comparas a ambos valores y desplazas el scroll hacia arriba si la nueva posición es menor que la anterior, o hacia abajo si la nueva posición es mayor que la anterior. La cantidad a desplazarse será igual a la altura del contenedor o de los hijos de este por el valor de un contador que aumentará o disminuirá de a uno ya sea que se esté subiendo o bajando.

Código HTML:
Ver original
  1. <div id = "padre">
  2.     <div class = "hijo"></div>
  3.     <div class = "hijo"></div>
  4.     <div class = "hijo"></div>     
  5. </div>

Código Javascript:
Ver original
  1. var padre = document.querySelector("#padre"),
  2.     ant = 0, //Posición anterior del scroll
  3.     pos = 0, //Nueva posición del scroll
  4.     i = 0; //Contador
  5.  
  6. padre.addEventListener("scroll", function(){
  7.     pos = this.scrollTop; //Tomo la nueva posición
  8.     if (pos > ant){ //Si está bajando
  9.         this.scrollTop = this.offsetHeight * ++i;
  10.     }
  11.     else if (pos < ant){ //Si está subiendo
  12.         this.scrollTop = this.offsetHeight * --i;
  13.     }
  14.     ant = this.scrollTop; //Actualizo la vieja posición
  15. }, false);

DEMO

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand