Foros del Web » Programando para Internet » Javascript » Frameworks JS »

No cargar imágenes hasta que no se estén viendo

Estas en el tema de No cargar imágenes hasta que no se estén viendo en el foro de Frameworks JS en Foros del Web. Hola a todos, cómo están? Estaba armando un sitio (por las dudas cuento que entre otras cosas usa librería jquery) que si o si (a ...
  #1 (permalink)  
Antiguo 20/09/2010, 11:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 9 meses
Puntos: 3
No cargar imágenes hasta que no se estén viendo

Hola a todos, cómo están?

Estaba armando un sitio (por las dudas cuento que entre otras cosas usa librería jquery) que si o si (a pedido del cliente) tiene que tener toda la información en una sola página (y a darle al scroll !).

El tema es que al tener tanta información y sobre todo tantas fotos hace que ande todo muy despacio y por ahí (si no se llega hasta abajo) consume más ancho de banda que el necesario.

Por eso pensé que tal vez la solución podría ser utilizar algún script que cargue las imágenes cuando se está en ese secor del html. He visto esto en varios sitios (lamentablemente ahora no me acuerdo de ninguno) que usan esta técnica y funciona muy bien.

Alguien sabe de lo que hablo? Por que lo releí y parece chino básico :P Cualquier ayuda será bienvenida! Gracias!
  #2 (permalink)  
Antiguo 20/09/2010, 13:17
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: No cargar imágenes hasta que no se estén viendo

como la búsqueda de imágenes de google http://www.google.com.ar/images?hl=e...w=1920&bih=886

o los comentarios en la doc de jquery http://api.jquery.com/scroll/



es bastante sencillo

Alto de página = 1000
Posición top del div = 1500
Si moves el scroll y obtenes la posición, lo restas con la posición del div y sabes si se encuentra en pantalla :)

hace 2 archivos php
tres.php
Código PHP:
Ver original
  1. <?php
  2. sleep(4);
  3. echo "contenido div 3";
  4. ?>

y cuatro.php
Código PHP:
Ver original
  1. <?php
  2. sleep(4);
  3. echo "contenido div 4";
  4. ?>


y este el html y jquery, suponé que querés cargar contenido sólo cuando se vean el div #tres y #cuatro

Código HTML:
Ver original
  1.   <head>
  2.     <title></title>
  3.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  5.     <script>
  6.     $( function (){
  7.         //Evento scroll para hacer unos calculos cada vez que muevan el scroll
  8.         $(window).scroll(function(){
  9.             /*
  10.              * Resto la posicion del div menos la posicion del scroll
  11.              * Si la pantalla es de 1000px entonces, sabiendo que la posicion del div es 1500 y el scroll de 100 sé que no se está viendo el div
  12.              * cuando la posicion top del scroll sea de 500 ahi recien está por entrar en pantalla, 1000 - 500 = 1000 (que es el tamaño de pantalla)
  13.              * si es menor o igual al tamaño de la pantalla muestro el contenido, tambien compruebo que el div no tenga clase 'cargando' asi no hace petición cada vez que se mueva el scroll
  14.              * Cuando entra en el condicional borro la clase '.cargando' asi ya no vuelve a entrar en el condicional
  15.              */
  16.             if( ( $('#tres').position().top - $(window).scrollTop() ) < $(window).height() && !$('#tres.cargado').length ){
  17.                $('#tres').text('Cargando...').addClass('cargado').load("tres.php");
  18.            }
  19.            //Y lo mismo para este
  20.            if( ( $('#cuatro').position().top - $(window).scrollTop() ) < $(window).height() && !$('#cuatro.cargado').length ){
  21.                $('#cuatro').text('Cargando...').addClass('cargado').load("cuatro.php");
  22.            }
  23.        });
  24.    });
  25.    </script>
  26.     <style>
  27.         div{height:500px; width:50px; background:green; margin-bottom:10px}
  28.         #precarga{position:fixed; background-color:yellow; left:50%; width:100px; height:100px; display:none}
  29.     </style>
  30.   </head>
  31.     <div id="precarga">Cargando...</div>
  32.     <div id="uno">Primer div</div>
  33.     <div id="dos">Segundo div</div>
  34.     <div id="tres">Tercer div</div>
  35.     <div id="cuatro">Cuarto div</div>
  36. </body>
  37. </html>
  #3 (permalink)  
Antiguo 22/09/2010, 11:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: No cargar imágenes hasta que no se estén viendo

gracias por la ayuda Dany!! voy a probarlo
  #4 (permalink)  
Antiguo 22/09/2010, 16:06
Avatar de alexk
Colaborador
 
Fecha de Ingreso: julio-2009
Ubicación: De vuelta al trono
Mensajes: 1.698
Antigüedad: 15 años, 4 meses
Puntos: 137
Respuesta: No cargar imágenes hasta que no se estén viendo

puedes probar con este plugin de jquery tambien a ver que tal... yo lo uso y va bien
http://www.appelsiini.net/projects/lazyload
__________________
Toroflix - movies.
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 00:42.