Maison interface Web js tutoriel Comment utiliser HTML, CSS et jQuery pour implémenter des techniques avancées de chargement paresseux d'images

Comment utiliser HTML, CSS et jQuery pour implémenter des techniques avancées de chargement paresseux d'images

Oct 28, 2023 am 08:25 AM
css html 图片懒加载

Comment utiliser HTML, CSS et jQuery pour implémenter des techniques avancées de chargement paresseux dimages

Comment utiliser HTML, CSS et jQuery pour implémenter des techniques avancées de chargement paresseux d'images

Le chargement paresseux est un moyen technique pour améliorer les performances des pages Web, particulièrement adapté aux pages Web contenant un grand nombre d'images. En utilisant HTML, CSS et jQuery, nous pouvons facilement implémenter le chargement paresseux des images pour accélérer le chargement des pages Web et améliorer l'expérience utilisateur. Cet article présentera comment utiliser ces trois technologies pour implémenter des techniques avancées de chargement paresseux d'images et donnera des exemples de code spécifiques.

1. Préparation HTML
En HTML, nous devons remplacer l'attribut src de chaque image qui doit être chargée paresseusement par un attribut data-src personnalisé. Dans le même temps, afin d'obtenir l'effet de chargement progressif des images, nous pouvons définir un espace réservé.

<img src="/static/imghw/default1.png"  data-src="path/to/image.jpg"  class="lazy"  data- alt="image">
Copier après la connexion

2. Paramètre de style CSS
Afin de conserver l'affichage de l'image d'espace réservé avant le chargement de l'image, nous devons utiliser CSS pour définir l'élément img. Dans le même temps, afin d'obtenir un effet de chargement progressif, nous pouvons également définir un effet de transition.

img {
  width: 100%;
  height: auto;
  max-width: 100%;
  opacity: 0;
  transition: opacity 0.3s ease-in;
}
img.loaded {
  opacity: 1;
}
Copier après la connexion

3. jQuery implémente le chargement paresseux
Il est très simple d'implémenter le chargement paresseux à l'aide de jQuery. Nous pouvons utiliser l'événement $(window).on('scroll', function(){}) pour écouter les événements de défilement et déclencher un chargement paresseux en déterminant si l'image est visible.

$(window).on('scroll', function() {
  $('img').each(function() {
    if (isElementInViewport($(this)) && !$(this).hasClass('loaded')) {
      $(this).attr('src', $(this).data('src')).addClass('loaded');
    }
  });
});
function isElementInViewport(el) {
  var rect = el.get(0).getBoundingClientRect();
  return (
    rect.top >= 0 &&
    rect.left >= 0 &&
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
  );
}
Copier après la connexion

Le code ci-dessus écoutera l'événement scroll et jugera chaque élément img Si l'élément se trouve dans la zone visible et n'a pas été chargé, attribuez la valeur de l'attribut data-src à src et ajoutez le nom de la classe chargée. aux balises chargées.

4. Chargement des fragments et optimisation des performances
Afin d'améliorer encore les performances, nous pouvons diviser l'image en plusieurs fragments à charger au lieu de charger toutes les images en même temps. Cela peut éviter les problèmes de performances causés par la page demandant un grand nombre d’images à la fois.

$(window).on('scroll', function() {
  var windowHeight = $(window).height();
  var scrollTop = $(window).scrollTop();
  $('img:not(.loaded)').each(function() {
    if (isElementInViewport($(this), windowHeight, scrollTop)) {
      $(this).attr('src', $(this).data('src')).addClass('loaded');
    }
  });
});
function isElementInViewport(el, windowHeight, scrollTop) {
  var rect = el.get(0).getBoundingClientRect();
  return (
    rect.top >= (scrollTop - windowHeight) &&
    rect.top <= (scrollTop + windowHeight * 2)
  );
}
Copier après la connexion

Dans le code ci-dessus, nous déterminons si chaque image se trouve dans la zone visible en obtenant la hauteur de la fenêtre et la position de la barre de défilement. Seules les images situées dans la zone visible seront chargées.

Pour résumer, en utilisant HTML, CSS et jQuery, nous pouvons facilement mettre en œuvre des techniques avancées de chargement paresseux d'images et améliorer la vitesse de chargement et l'expérience utilisateur des pages Web. En définissant des attributs data-src personnalisés, des styles CSS et des écouteurs d'événements jQuery, ainsi qu'en combinant le chargement de fragments et l'optimisation des performances, nous pouvons contrôler de manière plus flexible le comportement de chargement des images et améliorer l'expérience utilisateur et les performances des pages. J'espère que les exemples de code fournis dans cet article vous seront utiles !

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!

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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Tableau imbriqué en HTML

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Bordure de tableau en HTML

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Marge gauche HTML

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Disposition du tableau HTML

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Déplacer du texte en HTML

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Liste ordonnée HTML

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Bouton HTML onclick

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Comment analysez-vous et traitez-vous HTML / XML dans PHP?

See all articles