Les images lazy-load

Un conteneur .lazy-load-image, cible du plugin, qui contient un loader lazy-load-loader et une image lazy-img.

Par défaut, on affiche une image transparente de la même taille que l'image finale (pour assurer un affichage correct de la page avant chargement de la source finale).

Lorsque le bloc arrive dans le view-port, on charge l'image finale.

Un attribut data-src indique la source de l'image finale.
Un attribut data-delta (facultatif) indique la valeur que l'on ajoute à la hauteur de la fenêtre pour lancer le lazy-load (on peut ainsi s'assurer que l'image est chargée avant d'arriver dans le view-port). Valeur numérique traduite en pixels ou "window" pour rajouter la hauteur de la fenêtre (et pourquoi pas ?).

data-delta="-600"

data-delta="window"

pas de data-delta

Code

HTML

CSS

css/regal-lazy-load.css
.lazy-load-image : position: relative et overflow: hidden;
.lazy-load-loader : position: absolute, left et top: 50%, z-index: -1 (pour être recouvert par le visuel final) et transform translate(-50%, -50%);
.lazy-img : transform translate(-100%, 0) et transition sur transform;
.lazy-image-loaded : appliqué à lazy-load-image lorsque l'image finale est chargée. J'applique alors un transform translate(0, 0) à .lazy-img, pour animation apparition de gauche à droite (mais tu peux choisir la transition qui te plait en modifiant les classes, hein ! et tu peux du coup appliquer aussi une classe différente à .lazy-load-loader si ça te chante).

css/regal-lazy-load-demo.css
.pswp__preloader__icn : loader animé en pure CSS (http://web-tricks.org/content/how-create-loading-image-using-css-only).

Javascript

css/regal-lazy-load-plugin.js
Déclaration des plugins :
$('.lazy-load-image').regalLazyLoad();