图片懒加载

2019-08-13  本文已影响0人  lacduang

原理: 先将图片的真实地址存储在自定义属性上面,所有图片的src设置一个默认的占位符,页面滚动时判断这些图片是否达到了可视范围之内,达到了就将这些图片的真实地址放入到src,浏览器会自动加载图片

html

 <ul>
    <li><img src="" data-trueSrc="./img/1.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/2.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/3.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/4.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/1.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/2.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/3.jpg" alt=""></li>
    <li><img src="" data-trueSrc="./img/4.jpg" alt=""></li>
  </ul>

js

<script>
    // 在浏览器的范围可视范围之内的图显示出来
    var imgs = document.images
    var curIndex = 0
    function showImg() {
      // 已经加载过得不需要再处理
      for(var i=curIndex; i<imgs.length; i++ ){
        console.log(imgs[i].offsetTop)

        // 滚动出去的距离
        var dis = document.documentElement.scrollTop || document.body.scrollTop

        if(imgs[i].offsetTop < window.innerHeight + dis) {
          console.log('在浏览器里面')
          imgs[i].src = imgs[i].getAttribute('data-trueSrc')
          curIndex = i                // 下一次就从上一次结束的位置开始
        }
      }
    }

    showImg()

    window.onscroll = function() {
      showImg()
    }

上一篇下一篇

猜你喜欢

热点阅读