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
$(window).scroll(function() {
$.each($('img'), function() {
if ( $(this).attr('data-src') && $(this).offset().top < ($(window).scrollTop() + $(window).height() + 100) ) {
var source = $(this).data('src');
$(this).attr('src', source);
$(this).removeAttr('data-src');
}
})
})
Ejemplo de código html
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Explicado
Cuando se desplaza la página, se comprueba cada imagen de la página.
$(this).attr('data-src')
- si la imagen tiene el atributo data-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 de data-src=
también conocido como la URL de la imagen
$(this).attr('src', source);
- pone ese valor en el src=
$(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="