J'ai proposé ma propre méthode de base qui semble fonctionner correctement (jusqu'à présent). Il y a probablement une douzaine de choses auxquelles certains des scripts populaires traitent et auxquelles je n'ai pas pensé.
Remarque - Cette solution est rapide et facile à mettre en œuvre, mais n'est bien sûr pas excellente pour les performances. Regardez certainement dans le nouvel Intersection Observer comme mentionné par Apoorv et expliqué par developer.google si les performances sont un problème.
Le 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');
}
})
})
Exemple de code html
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Expliqué
Lorsque la page défile, chaque image de la page est cochée.
$(this).attr('data-src')
- si l'image a l'attribut data-src
et à quelle distance ces images sont du bas de la fenêtre.
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
ajustez le + 100 à ce que vous voulez (- 100 par exemple)
var source = $(this).data('src');
- obtient la valeur de data-src=
aka l'url de l'image
$(this).attr('src', source);
- met cette valeur dans le src=
$(this).removeAttr('data-src');
- supprime l'attribut data-src (pour que votre navigateur ne gaspille pas de ressources à jouer avec les images déjà chargées)
Ajout au code existant
Pour convertir votre html, dans un éditeur, recherchez et remplacez src="
parsrc="" data-src="