Je reprends ce billet un mois plus tard, pour ce petit problème de loader : il s'agit d'afficher une image (loading.gif) en background, durant le temps où l'image se charge. Le chargement de l'image s'effectue grâce au code suivant :
1 2 3 4 5 6 7
| var item = $('<li><a class="black-links" href="' + data.url + '#comments" title="' + data.title + '"><img class="loading"></a></li>');
var img = item.find('img');
img
.hide()
.one('load', function() { $(this).removeClass('loading').attr('alt', data.title).attr('width', data.width).attr('height', data.height).fadeIn(); })
.attr('src', data.src)
.each(function() { if (this.complete) $(this).trigger('load'); }); |
Il y a donc une class "loading" au départ sur l'image, que l'on supprime une fois l'image chargée. Côté CSS, ça donnera donc :
.loading { background: #FFF url(../img/loading.gif) 112px 112px no-repeat; }
Le problème est le suivant : l'image est chargée sans problème, puis s'affiche correctement, mais le loader n'est jamais affiché durant le chargement (c'est visible ici).
J'ai pensé à supprimer le ".hide()"... mais cela ne va-t-il pas entraîner l'affichage partiel de l'image AVANT qu'elle ne soit entièrement chargée ?
Merci de votre aide !
Partager