2009-01-14 8 views
0

J'ai un div qui a un tas de vignettes montrant horizontalement (avec une barre de défilement horizontale). Existe-t-il un moyen de charger ces vignettes paresseux et de les afficher uniquement lorsque l'utilisateur fait défiler horizontalement sa position? Tous les exemples que j'ai vus vérifient la fenêtre du navigateur, pas un div. Ceci est pour les entrées du concours, donc il y a parfois des centaines d'entrées, ce qui affecte considérablement les performances.Javascript: Lazy Charger des images en horizontal Div?

Merci d'avance.

Répondre

4

Je fourchue le lazy load plugin pour jQuery et a ajouté le support pour les images de chargement paresseux dans un conteneur div. Le lazy load plugin pour jQuery prend désormais cela en charge directement. Il ne devrait pas être trop difficile de supprimer la dépendance à jQuery ou de l'adapter à une autre bibliothèque si vous en avez besoin.

Vous pouvez obtenir mon projet forked de github: http://github.com/silentmatt/jquery_lazyload/tree/master. Pour l'utiliser, appelez lazyload sur les images comme dans l'original, sauf que vous devez ajouter une option "container" avec l'élément div scrolling. Donc, si votre HTML ressemble à ceci:

<div id="container" style="width: 765px; overflow: scroll;"> 
    <img src="image1.jpg" width="765" height="574"> 
    <img src="image2.jpg" width="765" height="574"> 
    <img src="image3.jpg" width="765" height="574"> 
    ... 
</div> 

vous appelleriez lazyload comme ceci:

$("#container img").lazyload({ container: $("#container") }); 
+0

merci beaucoup! Je me suis arraché les cheveux depuis longtemps! –

+0

Question rapide: il ne semble pas fonctionner dans IE, est-ce un problème connu? –

+0

Je pense que le problème était que l'événement de chargement ne se déclenchait pas lorsque les images étaient chargées trop rapidement. Je l'ai modifié pour qu'il définisse l'attribut src après la liaison de l'événement to load, donc cela devrait fonctionner maintenant. –

Questions connexes