Commande de l'ordre de chargement de l'image en HTML

Est-il un moyen de contrôler l'ordre de chargement des images sur une page web? Je pensais essayer de simuler un pré-chargeur en chargeant d'abord un graphique léger "chargement". Des idées?

Merci

19
demandé sur Yarin 2010-11-18 06:46:41

4 réponses

utilisez javascript, et laissez votre image src propriétés du vide.

assembler un tableau d'adresses d'image, et y revenir, en chargeant vos images et en appelant une fonction récursive lorsque le onload ou onerror méthode pour chaque image renvoie une valeur.

HTML:

<img src='' id='img0' alt='[]' />
<img src='' id='img1' alt='[]' />
<img src='' id='img2' alt='[]' />

JS:

var imgAddresses = ['img1.png','img2.jpg','img3.gif'];

function loadImage(counter) {
  // Break out if no more images
  if (counter==imgAddresses.length) { return; }

  // Grab an image obj
  var I = document.getElementById("img"+counter);

  // Monitor load or error events, moving on to next image in either case
  I.onload = I.onerror = function() { loadImage(counter+1); }

  //Change source (then wait for event)
  I.src = imgAddresses[counter];
}

loadImage(0);

Vous pouvez même jouer avec un document.getElementsByTagName("IMG").

Par ailleurs, si vous avez besoin d'un chargement d'image, c'est un bon endroit pour démarrer.

EDIT

pour éviter les requêtes multiples au serveur, vous pouvez utiliser presque la même méthode, mais n'insérez pas d'éléments d'image jusqu'à ce que vous soyez prêt à les charger. Avoir un <span> conteneur en attente pour chaque image. Ensuite, bouclez la boucle, récupérez l'objet span et insérez dynamiquement la balise image:

var img = document.createElement("IMG");
document.getElementById('mySpan').appendChild(img);
img.src = ...

Puis l'image requête est faite qu'une seule fois, lorsque l'élément est créé.

20
répondu Ben 2017-10-31 14:29:47

il suffit d'inclure L'image 'chargement' avant toute autre image. habituellement, ils sont inclus en haut de la page et lorsque le chargement de la page est terminé, ils sont cachés par un JS.

5
répondu SuperDuck 2010-11-18 04:15:20

je pense que cet article https://varvy.com/pagespeed/defer-images.html donne une très bonne solution et simple. Notez la partie qui explique comment créer des balises "empty" avec:

à éviter

pour afficher une image de chargement, il suffit de la mettre dans le HTML et de la modifier plus tard à l'endroit approprié moment/l'événement.

4
répondu tiomno 2015-09-14 01:54:38

Voici un petit plugin jQuery qui fait cela pour vous: https://github.com/AlexandreKilian/imageorder

3
répondu AlexK 2017-02-07 12:13:16