首页 > 其他 > 详细

图片惰性加载(滚动到可视区时 图片才加载)

时间:2020-04-29 11:18:27      阅读:74      评论:0      收藏:0      [点我收藏+]

惰性加载图片:

<ul>
  <li class=lazy><img data-original=images/0.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/1.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/2.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/3.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/4.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/5.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/6.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/7.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/8.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/9.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/10.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/11.jpg src=images/loading.gif/></li>
  <li class=lazy><img data-original=images/12.jpg src=images/loading.gif/></li>
</ul>

js:

<script type="text/javascript">
 
    // 图片惰性加载
    init();
    function init() {
      var images = document.images;
      // 加载首屏图片
      for (var i = 0, len = images.length; i < len; i++) {
        var obj = images[i];
        // 如果在可视区域并且还没被加载过
        if(obj.getBoundingClientRect().top < document.documentElement.clientHeight && !obj.isLoad) {
          obj.isLoad = true;
          // 先调用 HTML5 方法
          if (obj.dataset) 
            imageLoaded(obj, obj.dataset.original);
          else 
            imageLoaded(obj, obj.getAttribute(data-original));
        } else {
          break;
        }
      }
    }
    window.onscroll = function() {
      lazyload();
    };
    function lazyload() {
      var lazy = 500;
      var images = document.images;
      for (var i = 0, len = images.length; i < len; i++) {
        var obj = images[i];
        if (obj.getBoundingClientRect().top - lazy < document.documentElement.clientHeight && !obj.isLoad) {
          obj.isLoad = true;
          obj.style.cssText = "transition: ‘‘; opacity: 0;"
          if (obj.dataset) 
            imageLoaded(obj, obj.dataset.original);
          else 
            imageLoaded(obj, obj.getAttribute(data-original));
        }
        if (obj.getBoundingClientRect().top < document.documentElement.clientHeight && !obj.isShow) {
          obj.isShow = true;
          obj.style.cssText = "transition: 1s; opacity: 1;"
        }
      }
    }
    function imageLoaded(obj, src) {
      var img = new Image();
      img.onload = function() {
        obj.src = src;
      };
      img.src = src;
    }

</script>

 

图片惰性加载(滚动到可视区时 图片才加载)

原文:https://www.cnblogs.com/xiaolucky/p/12800712.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!