zoukankan      html  css  js  c++  java
  • 图片懒加载高性能实现(IntersectionObserver方法)

    页面img标签

    <img class="lazy" src="placeholder-image.jpg" data-src="image-to-lazy-load-1x.jpg" data-srcset="image-to-lazy-load-2x.jpg 2x, image-to-lazy-load-1x.jpg 1x" alt="I'm an image!">

    JS实现

    document.addEventListener("DOMContentLoaded", function() {
      var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));
    
      if ("IntersectionObserver" in window) {
        let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
          entries.forEach(function(entry) {
            if (entry.isIntersecting) {
              let lazyImage = entry.target;
              lazyImage.src = lazyImage.dataset.src;
              lazyImage.srcset = lazyImage.dataset.srcset;
              lazyImage.classList.remove("lazy");
              lazyImageObserver.unobserve(lazyImage);
            }
          });
        });
    
        lazyImages.forEach(function(lazyImage) {
          lazyImageObserver.observe(lazyImage);
        });
      } else {
        // Possibly fall back to a more compatible method here
      }
    });
  • 相关阅读:
    python-pycharm-django
    CSS
    django邮件
    访问user Model的三种方式
    weblogic升级war包(工作备忘)
    RestfulAPI_ 验证 与授权
    Restful API serialize相关
    scripy login captcha
    linux环境设置和核心命令
    java 调用JIRA api接口
  • 原文地址:https://www.cnblogs.com/peter-web/p/13186765.html
Copyright © 2011-2022 走看看