Preview:
function lazyLoad() {
  const images = document.querySelectorAll('img[data-src]');
  const iframes = document.querySelectorAll('iframe[data-src]');
  const elements = [...images, ...iframes]; 

  const observer = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const element = entry.target;
        if (element.tagName === 'IMG') {
          element.src = element.dataset.src;
        } else if (element.tagName === 'IFRAME') {
          element.src = element.dataset.src;
        }
        observer.unobserve(element);
      }
    });
  });

  elements.forEach(element => observer.observe(element));
}

document.addEventListener('DOMContentLoaded', lazyLoad);
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter