Foros del Web » Programando para Internet » Javascript »

Cargar imagen cuando se mueva el scroll, tipo Youtube

Estas en el tema de Cargar imagen cuando se mueva el scroll, tipo Youtube en el foro de Javascript en Foros del Web. Pues eso, estoy intentando hacer un script tipo Youtube, cuando ves un vídeo, en los videos relacionados se encuentra un div con una altura correspondiente ...
  #1 (permalink)  
Antiguo 11/12/2009, 10:59
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Cargar imagen cuando se mueva el scroll, tipo Youtube

Pues eso, estoy intentando hacer un script tipo Youtube, cuando ves un vídeo, en los videos relacionados se encuentra un div con una altura correspondiente con el estilo overflow:auto "solo se muestra parte del div hasta que muevas el scroll".

En realidad los thumbs tienen al inicio el atributo href="pixel.gif" y thumb="url_de.imagen" que no es estandar, Los thumb solo se cargan cuando mueves el scroll y estas viendo la parte html, es decir el atributo thumb se coloca en el href y este se borra.

Existe un evento que funcione cuando se mueva el scroll?, lo que podría hacer ahora es hacer un intervalo de tiempo cuando el scrollTop cambie, ejecuto la función de cambiar url de imágenes.

Esto ahorra ciertas cargas, es decir la parte html oculto que contiene imágenes en el div.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #2 (permalink)  
Antiguo 11/12/2009, 14:24
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Cargar imagen cuando se mueva el scroll, tipo Youtube

EH??? Mira, el tema de que los thumbs no se ven hasta que scrolleas es porque la imagen esta escondida y se carga al mostrarse, no por otra cosa....
  #3 (permalink)  
Antiguo 12/12/2009, 00:19
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Cargar imagen cuando se mueva el scroll, tipo Youtube

Hola America|UNK,

La verdad es que no me habia fijado, jeje. Es interesante. Bueno, eso lo hacen usando el evento del scroll, y cuando se activa simplemente cambian el fondo del div por el de la imagen, jeje.

Aqui te muestro un ejemplo con un codigo super tonto y sencillo y super corto que se ha convertido en un macro documento pues no me expliques no he parado de escribir hasta estar aburrido, jeje.

Aqui esta el codigo(para que funcione tienes que guardar el codigo en un documento llamado 'salbatore_mola_mazo.html'):
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cargar imagenes al mover el scroll</title>
</head>
	<script>
		function cargar_imagenes_videos(modo_de_cargar)
			{
				//ahora comprobamos el modo que has decidido cargar las imagenes, lo mejor la sencilla, :P
					if(modo_de_cargar=='forma_sencilla')
						{
							//esta forma solo cambia la ruta de la imagen de fondo de los miniaturas.
							//alert('Cambio de fondo!... ya las veo!... magia!');
							//si usamos colores.
								document.getElementById('video_sin_cargar').style.background= "green";
							//si usamos imagen (borrar "//" de la siguiente linea)
								//document.getElementById('video_sin_cargar').style.background= "url('asd.png')";
						}
					if(modo_de_cargar=='forma_compleja')
						{
							//tienes dos formas de hacerlo, una con ajax, recibiendo las imagenes.
							alert('Ahora con un sencillo ajax recibes la informacion de cada video.');
						}
					if(modo_de_cargar==null)
						{
							alert('Especifica el modo de cargar las imagenes en onscroll=cargar_imagenes_videos("xxxxxx")');
						}
			}
	</script>
 <body onscroll="cargar_imagenes_videos('forma_sencilla')" style="margin:0; padding:0; font-family:Verdana, Arial, Helvetica, sans-serif">
 	<div id="div_alto_para_obligar_a_crear_scroll" style="height:1500px;padding:20px; background:#009933">
	<fieldset style="background:#00CCCC; ">
	<legend style="background:#00CCCC">CONSEJOS Y EXPLICACION</legend>
	
		Ahora si mueves el scroll se activara la funcion 'cargar_imagenes_videos', donde haras que cargue las imagenes de los videos.
		Te pongo dos ejemplos de videos. En caso de que quieras hacerlo correctamente, deberas acceder a los elementos por medio de su clase, para no crear javascript obstructivo.
		Pasarias un bucle por todos los elementos que tienen la clase "miniatura_oculta" y les cambiarias el fondo!... chupado!... ademas de divertido!. :D.
		<hr />
		Otra cosa, para saber cuantos videos no debes cargar, es decir, para saber los videos que debes cargar tienes dos metodos:
		<br/>
			<ul>
				<li>Calcular el tamaño de lo que ve el usuario, es decir, de la ventana de su navegador (con innerHeight )  o mejor calcular el tamaño del div que se visualizan los videos hasta cortar con lo invisible de la ventana(con offsetHeight)</li>
				<li>Simplemente cargar los primeros y dejar los ultimos sin cargar, tal cual.</li>
			</ul>
		<div style="width:12px; height:12px; background:green; overflow:auto; float:left"></div>
		<div style=" overflow:auto; float:left"> En verde imagen cargada.</div>
		<br/>
		<div style="width:12px; height:12px; background:red; overflow:auto; float:left"></div>
		<div style="  overflow:auto; float:left"></div> En rojo imagen sin cargar.
	</fieldset>
	<fieldset style="background:#00CCCC; margin-top:20px ">
	<legend style="background:#00CCCC">VIDEOS DE DEMOSTRACION</legend>
		<div style=" background:#00CC99; padding:20px; overflow:auto">
			<div style="float:left; width:100px; height:100px; background:green; margin-right:20px;"></div>
			<div style="float:left; width:300px;">
				<span  style="color:#990000">Video:</span> La rana gustavo se comio un cucurucho de nata y chocolate.
				<br />
				<span  style="color:#990000">Autor:</span> Michael Jackson.
			</div>
		</div>	
		<hr />
	<div style=" background:#00CC99; padding:20px;  overflow:auto">			
			<div id="video_sin_cargar" style="float:left; width:100px; height:100px; background:red; margin-right:20px;"></div>
			<div style="float:left; width:300px;">
			<span  style="color:#990000">Video:</span> Espinete se cae de su triciclo galactico.
			<br />
			<span  style="color:#990000">Autor:</span> Darth Vader.
			</div>
		</div>
	</fieldset>
	<fieldset style="background:#00CCCC; margin-top:20px  ">
	<legend style="background:#00CCCC">¿LE PONEMOS MAS COSAS?</legend>
		<ul>
			<li>Que al pasar el cursor por encima del video cambie la imagen del fotograma visualizado. Lo podrias hacer facilmente con el evento mouseover</li>
			<li>Si lo vas a hacer con videos de youtube, pues supongo que no tienes un super servidor y ganas de alojar videos, debes saber que las miniaturas se guardan de este modo (lo digo para hacer una previsualizacion):</li>
			<ul>
			<li>http://img.youtube.com/vi/3vP7hnoy9Tw/1.jpg</li>
			<li>http://img.youtube.com/vi/3vP7hnoy9Tw/2.jpg</li>
			<li>http://img.youtube.com/vi/3vP7hnoy9Tw/3.jpg</li>
			</ul>
			<li>Ya puestos hasta podias hacer una previsualizacion del video en miniatura con un ajax en el que se viese el video en  50x50 sin volumen.</li>
			<li>Debes mirar en google los trucos para incustrar videos de algunos blog, existen cosas graciosas, sobre el comportamiento del script de youtube. Y termino! :p</li>
		</ul>
		
	</fieldset>
	Espero que te sirva!.
	</div>
</body>
</html>

Espero que te sirva!... un saludo!
  #4 (permalink)  
Antiguo 20/12/2009, 20:27
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Cargar imagen cuando se mueva el scroll, tipo Youtube

hola America|UNK, lo que dices es cierto y esalgo que yo tambien estoy buscando hacer, la idea que a mi se me ocurrio es: dentro del div con overflow:auto hacer varios divs de un tamaño menor y cuando movemos el scroll cuando el valor de ScrollTop llegue a un valor hacer que cargue a traves de ajax el div siguiente y asi susesivamente.

No es exacamente igual que lo que hace youtube pero la finalidad es la misma, evitar consumo de ancho de banda si el usuario no solicita esa información. de esta forma tambiel la pagina se cargará más rapido.

Cuando termine el script lo voy a postear.

Saludos y FELICES FIESTAS.
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 11:51.