图片懒加载的方案

本文探讨了图片懒加载的重要性,介绍了滚动到底部加载和IntersectionObserver的原理,并提供了jQuery懒加载源码分析。通过IntersectionObserver实现元素视图可见时才加载图片,以优化用户体验和网络资源消耗。
摘要由CSDN通过智能技术生成

图片懒加载的方案
前言
图片懒加载是前端性能提升的重要方面之一,其主要的用途是: 减少网络加载,提升体验。
但为了影响体验,你需要最好写好布局样式,最好写好占位图。
懒加载的原理
其实图片的加载主要是因为图片的src引起的,而如果我们想要实现懒加载,就避免src路径的加载即可,我们可以将图片的路径存储到data-src的自定义数据属性上,然后在需要的时候按需加载。
按需加载的实现方式有两种:这里重点说第一种,目前在移动端以及在pc的瀑布流布局中都是第一种居多。
1 滚动到页面底部加载
2 分页加载
滚动到页面底部加载的原理
原来的方式:滚动监听
其主要实现的原理是对滚动事件的监听,当发现滚动条高度+滚动条高度等于document的高度时,就是达到页面的底部了,需要重新加载图片的时机。

KaTeX parse error: Expected '}', got 'EOF' at end of input: …ction(){   if((window).scrollTop() + ( w i n d o w ) . h e i g h t ( ) > = (window).height()>= (window).height()>=(document).height()){

var $div = ‘

  • append添加的节点
  • ’;
    
    KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲container').app…div)
    
     }
    
    });
    新的方式:IntersectionObserver
    我们去看下jq的lazyload的源码是如何写这部分函数的,核心是依赖IntersectionObserver,是检测元素是否进入视图,如果有进入,那么就会移除其lazy的class,其源码地址:链接
    
    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
    
    }
    
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackieChan_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值