Maison > interface Web > js tutoriel > Explication détaillée du principe de mise en œuvre du chargement paresseux des images en js

Explication détaillée du principe de mise en œuvre du chargement paresseux des images en js

王林
Libérer: 2020-04-02 09:20:23
avant
2577 Les gens l'ont consulté

Explication détaillée du principe de mise en œuvre du chargement paresseux des images en js

Avantages du chargement paresseux des images :

Améliorez l'expérience utilisateur

Optimisez le code

Réduire les requêtes http ;

Réduire la pression côté serveur ;

Chargement à la demande du serveur

Principe du chargement paresseux des images :

Définissez d'abord le src de l'image sur la même image ou ne la définissez pas, et définissez un attribut spécial pour la balise img, par exemple : data-src est utilisé pour stocker le véritable aperçu adresse de l'image ; si l'image n'entre pas dans la zone visible, affiche la même image ou n'affiche pas l'image directement, aucune requête http ne se produira à ce moment-là. Lorsque l'image entre dans la zone visible, la valeur sur data-src est. attribué à src, puis la requête http est envoyée.

Clé : Déterminer si l'image entre dans la zone visible (fonction clé)

Largeur de la zone visible de la page : document.body.clientWidth

Web page Hauteur de la zone visible : document.body.clientHeight;

Largeur de la zone visible de la page Web : document.body.offsetWidth (y compris la largeur du bord

Hauteur de la zone visible de la page Web : document) ; .body.offsetHeight ( Y compris la largeur du bord);

Largeur du texte intégral du corps de la page Web : document.body.scrollWidth ;

Hauteur du texte intégral du corps de la page Web : document. .body.scrollHeight;

La page Web défile La hauteur de la page : document.body.scrollTop

Le côté gauche de la page en cours de défilement : document.body.scrollLeft; partie gauche : window.screenLeft ;

Hauteur de la résolution de l'écran : window.screen.height;

Largeur de la résolution de l'écran : window.screen.width ; height: window.screen.availHeight;

La distance de l'élément actuel par rapport au haut de son élément offsetParent : HTMLElement.offsetTop;

Hauteur de la fenêtre du navigateur (en pixels) : window.innerHeight; (inclut également la hauteur de la barre de défilement s'il y a une barre de défilement horizontale)

(tutoriel recommandé :

tutoriel js

)

Implémentation du code :

partie html

<div>
  <img src="./img/1.jpg" data-src="./img/1.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/2.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/3.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/4.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/5.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/6.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/7.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/8.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/9.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/10.jpg" alt="">
 </div>
Copier après la connexion
partie js
window.onload = () => {
   // 获取某节点与浏览器顶部的距离
   function getTop(e) {
    if (!e) return
    return e.offsetTop
   }
   let imgs = document.getElementsByTagName(&#39;img&#39;)
   function lazyLoading(imgs) {
    // 可是区域高度
    let innerHeight = window.innerHeight;
    // 滚动区域高度
    let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    for (let i = 0; i < imgs.length; i++) {
     // 图片距离顶部的距离大于可视区域和滚动区域之和时加载
     if (scrollTop + innerHeight > getTop(imgs[i])) {
      imgs[i].src = imgs[i].getAttribute(&#39;data-src&#39;)
     }
    }
   }
   lazyLoading(imgs)
   window.onscroll = () => {
    lazyLoading(imgs)
   }
  }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal