Foros del Web » Programando para Internet » Jquery »

Animando con wheel

Estas en el tema de Animando con wheel en el foro de Jquery en Foros del Web. Saludos. Tengo un par de dudas y un problema. Podéis ver lo que quiero hacer en este link: http://fetching-bails.000webhostapp.com/rotulo/ En resumen: al hacer scroll en ...
  #1 (permalink)  
Antiguo 20/11/2018, 15:43
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 9 años, 5 meses
Puntos: 1
Animando con wheel

Saludos.
Tengo un par de dudas y un problema.
Podéis ver lo que quiero hacer en este link:
http://fetching-bails.000webhostapp.com/rotulo/
En resumen: al hacer scroll en un determinado momento se bloquea el scroll y se anima el texto hacia izquierda o hacia derecha según el sentido de la rueda del ratón. Cuando el texto llegue a su tope (dcha, izda) se libera el scroll y continúa la navegación.
Las dudas:
1) Si hago el scroll con la rueda del ratón muy despacio, detecta que ha llegado a la zona de navegación y hace la animación. Pero si uso la rueda normalmente no funciona la animación. ¿Debo controlar la velocidad del scrool con jquery o javascript para que eso no ocurra?
2) En el código que pongo más adelante ¿debo poner la parte que controla el 'wheel' dentro de la parte que controla el scroll?

El problema:
No funciona si sobrepaso con el scroll el div que contiene la animación y vuelvo a él.

El código html:

Código HTML:
<body>
	<div class="cortina">
	</div>
	<section class="parotulo">
		<div class="rotulo">
			<h2>What is called beauty always develops from real life.</h2>
			<p>Junichiro Tanizaki. In Praise of Shadows</p>
		</div>
	</section>
	<section class="empuja"></section>
</body> 
El código jquery:
Código:
$(document).ready(function(){
	var dispara1 = 0;//para el rótulo
	var top_parotulo = $('.parotulo').offset().top;
	$(window).on('wheel', function(event){
		if($(window).scrollTop() < top_parotulo){
			dispara1 = 0;
			console.log('dispara1 fuera: ' + dispara1);
		}
		if($(window).scrollTop() >= top_parotulo && dispara1 == 0){
			event.preventDefault();
			if(event.originalEvent.deltaY > 0){
				$('.rotulo h2').css('left', '-=6');
				console.log('dispara1 bajando: ' + dispara1 + ' left: '+ $('.rotulo h2').css('left') + ' windowtop: '+ $(window).scrollTop() + ' toprotulo: ' + top_parotulo);
				if($('.rotulo h2').offset().left < -400){//temporal el número sera -1520 y activar todo el texto de rotulo h2
					dispara1 = 1;
					$('.rotulo h2').css('left', '-400');
				}
			}
			if(event.originalEvent.deltaY < 0){
				$('.rotulo h2').css('left', '+=6');
				if($('.rotulo h2').offset().left > $(window).width()*70/100){
					$('.rotulo h2').css('left', $(window).width()*70/100);
					dispara1 = 1;
					console.log('dispara1 salido: ' + dispara1);
				}
			}
		}
		if($(window).scrollTop() > (top_parotulo + 190) && dispara1 == 1){dispara1 = 0; console.log('dispara1 después: ' + dispara1);}
	});
	$(document).on('scroll', function(){
		var elscroll = $(window).scrollTop();
	});
});
Si alguien puede ayudarme: gracias por adelantado.

Etiquetas: animacion, scroll
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.