[Javascript] IntersectionObserver -- Lazy Load Images on a Website

时间:2018-05-08 21:34:30   收藏:0   阅读:173

When it comes to websites performance is king. How long it takes for a page to load can mean the difference of millions of dollars for large ecommerce sites. In this lesson we‘ll use the IntersectionObserver to check when an image is in the viewport to defer loading the image.

  document.addEventListener(‘DOMContentLoaded‘, () => {
      const lazyImages = Array.from(document.querySelectorAll(‘img.lazy‘));

      if (‘IntersectionObserver‘ in window && ‘IntersectionObserverEntry‘ in window && ‘intersectionRatio‘ in window.IntersectionObserverEntry.prototype) {
          // Define the observer
          let lazyImageObserver = new IntersectionObserver((entries, observer) => {
              entries.forEach((entry) => {
                  // logic for handling interstion
                  if (entry.isIntersecting) {
                      let lazyImage = entry.target
                      lazyImage.src = lazyImage.dataset.src
                      lazyImage.srcset = lazyImage.dataset.srcset
                      lazyImage.classList.remove(‘lazy‘)
                      lazyImageObserver.unobserve(lazyImage)
                  }
              })
          })

          // What to observe
          lazyImages.forEach(lazyImage => {
              lazyImageObserver.observe(lazyImage)
          })
      } else {

      }
  })

 

https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API/Timing_element_visibility

 

原文:https://www.cnblogs.com/Answer1215/p/9010725.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!