Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich mit JavaScript den Einblendeffekt des verzögerten Ladens von Bildern erzielen?

Wie kann ich mit JavaScript den Einblendeffekt des verzögerten Ladens von Bildern erzielen?

WBOY
WBOYOriginal
2023-10-28 09:10:451352Durchsuche

如何使用 JavaScript 实现图片懒加载的淡入效果?

Wie verwende ich JavaScript, um den Einblendeffekt des verzögerten Ladens von Bildern zu erzielen?

Im modernen Webdesign ist das verzögerte Laden von Bildern zu einer gängigen Technologie geworden, um das Benutzererlebnis und die Website-Leistung zu verbessern. Das verzögerte Laden von Bildern kann die anfängliche Ladezeit verkürzen, indem das Laden der Bilder verzögert wird, bis der Benutzer dorthin scrollt, wo sie sich befinden. Um das Benutzererlebnis weiter zu verbessern, kann das Hinzufügen eines Einblendeffekts die Seite außerdem flüssiger und attraktiver machen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript den Einblendeffekt des verzögerten Ladens von Bildern implementieren.

Der erste Schritt besteht darin, zu bestimmen, welche Bilder verzögert geladen werden müssen. Normalerweise setzen wir das src-Attribut des img-Tags auf leer und speichern dann die tatsächliche Bildadresse in einem benutzerdefinierten Attribut, z. B. data-src. Auf diese Weise wird das Bild nicht geladen, wenn die Seite geladen wird. Erst wenn der Benutzer zum Speicherort des Bildes scrollt, wird die tatsächliche Bildadresse geladen und gerendert.

<img class="lazy-img" data-src="path/to/image.jpg" src="" alt="Lazy Image">

Als nächstes müssen wir etwas JavaScript-Code hinzufügen, um den Lazy-Loading-Effekt zu erzielen. Wir achten auf Benutzer-Scroll-Ereignisse und prüfen, welche Bilder sich im sichtbaren Bereich befinden. Für Bilder im sichtbaren Bereich weisen wir ihre reale Adresse (also den Wert des data-src-Attributs) dem src-Attribut zu, um das Bild zu laden.

// 获取所有拥有lazy-img类的图片元素
const lazyImages = document.querySelectorAll('.lazy-img');

// 监听用户滚动事件
window.addEventListener('scroll', function() {
  // 循环遍历所有图片元素
  for (let i = 0; i < lazyImages.length; i++) {
    // 检查图片元素是否在可视区域内
    if (isInViewport(lazyImages[i])) {
      // 将真实的图片地址赋给src属性
      lazyImages[i].src = lazyImages[i].getAttribute('data-src');
      // 添加淡入效果
      lazyImages[i].classList.add('fade-in');
    }
  }
});

// 检查元素是否在可视区域内的函数
function isInViewport(element) {
  const rect = element.getBoundingClientRect();
  return (rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth));
}

Im obigen Code verwenden wir eine isInViewport()-Funktion, um zu prüfen, ob sich das Bildelement im sichtbaren Bereich befindet. Diese Funktion ruft die Positionsinformationen des Elements durch Aufrufen der Methode getBoundingClientRect() ab und vergleicht sie mit der Höhe und Breite des Fensters. Gibt true zurück, wenn sich das Element im sichtbaren Bereich befindet.

Schließlich können wir dem Bild auch einen Einblendeffekt hinzufügen, damit es nach dem Laden reibungslos auf der Seite angezeigt wird. Wir fügen dem Bildelement eine Einblendklasse hinzu, sodass nach dem Laden des Bildes der CSS-Übergangseffekt ausgelöst wird, um den Einblendanimationseffekt zu erzielen.

.lazy-img {
  opacity: 0;
  transition: opacity 0.3s ease-in;
}

.lazy-img.fade-in {
  opacity: 1;
}

Im obigen Code setzen wir die Deckkraft des Bildes zunächst auf 0 und stellen es dann mithilfe eines CSS-Übergangseffekts schrittweise auf volle Deckkraft (d. h. 1) um. Dieser Vorgang dauert 0,3 Sekunden und wird schrittweise durchgeführt.

Durch die oben genannten Schritte können wir JavaScript verwenden, um den Einblendeffekt des verzögerten Ladens von Bildern zu erzielen. Dies verbessert nicht nur die Website-Leistung und das Benutzererlebnis, sondern sorgt auch dafür, dass die Website reibungsloser und attraktiver aussieht. Ich hoffe, dieser Artikel hilft Ihnen!

Das obige ist der detaillierte Inhalt vonWie kann ich mit JavaScript den Einblendeffekt des verzögerten Ladens von Bildern erzielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn