Lazy loading images - Ładowanie obrazków z opóźnieniem. jQuery, waypoints

Prawdopodobnie spotkałeś się z blogami, na których avatary użytkowników w komentarzach wyświetlają się wraz z przewijaniem strony. Podobny efekt ujrzysz przewijając nasz ranking użytkowników http://www.webook.pl/wypracowania_ranking_uzytkownikow.php Efekt taki można uzyskać np. za pomocą wtyczki [b]Lazy Load Plugin for jQuery[/b] http://www.appelsiini.net/projects/lazyload Jednak wtyczka ta nie jest już rozwijana dlatego pokażę przykład stworzenia takiego efektu z wykorzystaniem [b]jQuery Waypoints[/b] http://imakewebthings.github.com/jquery-waypoints/ Do naszego dokumentu w sekcji dołączamy bibliotekę [b]jQuery[/b] oraz wtyczkę [b]jQuery Waypoints[/b] [code=xml] (…)

Prawdopodobnie spotkałeś się z blogami, na których avatary użytkowników w komentarzach wyświetlają się wraz z przewijaniem strony. Podobny efekt ujrzysz przewijając nasz ranking użytkowników http://www.webook.pl/wypracowania_ranking_uzytkownikow.php

Efekt taki można uzyskać np. za pomocą wtyczki [b]Lazy Load Plugin for jQuery[/b] http://www.appelsiini.net/projects/lazyload Jednak wtyczka ta nie jest już rozwijana dlatego pokażę przykład stworzenia takiego efektu z wykorzystaniem [b]jQuery Waypoints[/b] http://imakewebthings.github.com/jquery-waypoints/

Do naszego dokumentu w sekcji dołączamy bibliotekę [b]jQuery[/b] oraz wtyczkę [b]jQuery Waypoints[/b] [code=xml] (…)

Następnie musimy zmienić zawartość znaczników img dla tych obrazków, które chcemy aby były ładowane w momencie gdy są widoczne na ekranie. Warto zaznaczyć, że dzięki takiemu rozwiązaniu strona ładuje się szybciej ponieważ nie są wczytywane obrazki nie mieszczące się w oknie przeglądarki. Dopiero gdy użytkownik przewinie stronę w dół tak aby kolejne obrazki były widoczne to nastąpi ich wczytanie.

Tak powinien wyglądać znacznik img dla obrazka, który ma być ładowany gdy jest widoczny. [code=xml][/code]

default.png - to obrazek, który jest wyświetlany domyślnie. Zostanie on zastąpiony naszym właściwym obrazkiem w momencie gdy będzie widoczny na ekranie. default.png to np. domyślny avatar dla użytkowników. obrazek.png - to docelowy obrazek, który ma się wyświetlać gdy jest widoczny w oknie przeglądarki. Odnosząc się do przykładu z avatarami, jest to właśnie avatar danego użytkownika.

Teraz gdy już określiliśmy, które obrazki mają być podmienione możemy wstawić przed znacznikiem skrypt, który będzie wykonywał podmianę obrazków gdy te będą widoczne. [code=js] $(‘img’).waypoint(function(event, direction) { var objImg = this; setTimeout(function() { var deferred = objImg.getAttribute(‘deferred’);
if(deferred) { $(objImg).animate({opacity: 0.1}, 250, function(){ objImg.src = deferred; //console.log(‘Lazy loading img:’, objImg.getAttribute(‘deferred’)); }).animate({opacity: 1.0}, 1000); }
},250); }, { triggerOnce: true, offset: function() { return $.waypoints(‘viewportHeight’) - $(this).height(); } }) [/code]

Gotowe! Możesz zobaczyć efekt przeglądając komentarze: http://www.webook.pl/wypracowania_komentarze.php