He notado esto en numerosos sitios web "modernos" (p. Ej., Búsqueda de imágenes de Facebook y Google) donde las imágenes debajo de la página se cargan solo cuando el usuario se desplaza hacia abajo en la página lo suficiente como para traerlas dentro de la región de la ventana gráfica visible ( al ver la fuente, la página muestra X número de <img>
etiquetas, pero no se obtienen del servidor de inmediato ). Cómo se llama esta técnica, cómo funciona y en cuántos navegadores funciona. ¿Y hay un complemento jQuery que pueda lograr este comportamiento con una codificación mínima?
Editar
Bono: ¿alguien puede explicar si hay un evento "onScrolledIntoView" o similar para elementos HTML? Si no es así, ¿cómo funcionan estos complementos?
javascript
jquery
html
scroll
lazy-loading
Salman A
fuente
fuente
Respuestas:
Algunas de las respuestas aquí son para páginas infinitas. Lo que está preguntando Salman es la carga lenta de imágenes.
Enchufar
Manifestación
EDITAR: ¿Cómo funcionan estos complementos?
Esta es una explicación simplificada:
fuente
Dave Artz de AOL dio una gran charla sobre optimización en jQuery Conference Boston el año pasado. AOL utiliza una herramienta llamada Sonar para la carga bajo demanda basada en la posición de desplazamiento. Verifique el código para conocer los detalles de cómo compara scrollTop (y otros) con el desplazamiento del elemento para detectar si parte o todo el elemento es visible.
Sonda jQuery
Dave habla de Sonar en estas diapositivas . Sonar comienza en la diapositiva 46, mientras que la discusión general sobre "carga a pedido" comienza en la diapositiva 33.
fuente
Se me ocurrió mi propio método básico que parece funcionar bien (hasta ahora). Probablemente haya una docena de cosas que algunos de los scripts populares abordan en las que no he pensado.
Nota : esta solución es rápida y fácil de implementar pero, por supuesto, no es excelente para el rendimiento. Definitivamente, busque en el nuevo Intersection Observer mencionado por Apoorv y explicado por developers.google si el rendimiento es un problema.
El JQuery
Ejemplo de código html
Explicado
Cuando se desplaza la página, se comprueba cada imagen de la página.
$(this).attr('data-src')
- si la imagen tiene el atributodata-src
y qué tan lejos están esas imágenes de la parte inferior de la ventana.
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
ajusta el + 100 a lo que quieras (- 100 por ejemplo)
var source = $(this).data('src');
- obtiene el valor dedata-src=
también conocido como la URL de la imagen$(this).attr('src', source);
- pone ese valor en elsrc=
$(this).removeAttr('data-src');
- elimina el atributo data-src (para que su navegador no desperdicie recursos jugando con las imágenes que ya se han cargado)Agregar al código existente
Para convertir su html, en un editor simplemente busque y reemplace
src="
consrc="" data-src="
fuente
Hay un bonito bastante infinita de desplazamiento plugin de aquí
Nunca he programado uno yo mismo, pero me imagino que así es como funciona.
Un evento está vinculado al desplazamiento de la ventana.
La función llamada comprueba si la parte superior de desplazamiento es mayor que el tamaño de la ventana
Se realiza una solicitud AJAX, especificando en qué número de resultado comenzar, cuántos tomar y cualquier otro parámetro necesario para la extracción de datos.
El ajax devuelve algún contenido (probablemente con formato JSON) y lo pasa a la función loadnig.
Espero que tenga sentido.
fuente
Use Lozad.js (solo 569 bytes sin dependencias), que usa IntersectionObserver para cargar imágenes de forma diferida.
fuente
La navaja suiza de carga diferida de imágenes es ImageLoader de YUI .
Porque hay más en este problema que simplemente observar la posición de desplazamiento.
fuente
Este enlace funciona para mi demostración
1.Cargue el complemento jQuery loadScroll después de la biblioteca jQuery, pero antes de la etiqueta del cuerpo de cierre.
2.Agregue las imágenes en su página web usando el atributo Html5 data-src. También puede insertar marcadores de posición utilizando el atributo src de img regular.
3. Llame al complemento en las etiquetas img y especifique la duración del efecto de desvanecimiento a medida que sus imágenes aparecen
fuente
Estoy usando jQuery Lazy . Me tomó alrededor de 10 minutos para poner a prueba y una o dos horas para agregar a la mayoría de los enlaces de imagen en uno de mis sitios web ( CollegeCarePackages.com ). No tengo ninguna relación (ninguna / cero) de ningún tipo con el desarrollador, pero me ahorró mucho tiempo y básicamente ayudó a mejorar nuestra tasa de rebote para los usuarios de dispositivos móviles y se lo agradezco.
fuente