图片懒加载

什么是懒加载

懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数, 懒加载也叫延迟加载,延迟加载图片或符合某些条件时才加载某些图片。

懒加载的原理

只有img标签中的src写入了图片的地址,加载页面时才会请求图片,所以使用懒加载时在src中并不写入任何地址,把图片的真实地址放到data- (标签内部属性可存数据)属性中,在js中绑定鼠标滚动事件,其回调中遍历所有图片并作出判断,将出现在视口中的图片的 'data-' 属性保存的地址放到 'src' 中即可。

HTML

<h1>js懒加载</h1> 

 <div class="box">

<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/1.jpg">

 <img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/2.jpg">

 <img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/3.jpg"> 

 <img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/4.jpg">

 <img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/5.jpg"> 

 <img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/6.jpg">

<img src="" onerror="this.src='./img/loading.jpg'" class="img" lazyload="true" data-original="./img/7.jpg"> 

 </div>

引入一堆图片src为空,地址写在data-original中,onerror表示当未加载图片时显示的临时加载页图片JavaScript

Script

window.onload = function () { //获取当前浏览器的视口高度 

 var viewHeight = document.documentElement.clientHeight; //鼠标滚动回调 

 function lazyload() { 

 var img = document.getElementsByClassName('img'); //获取所有图片集合 //遍历图片集合 

 for (let item of img) { //获取图片距视口顶部的距离 

 var imgHeight = item.getBoundingClientRect(); //判断当图片出现在视口160px时把地址放到src中,显示出图片 

 if (imgHeight.top < (viewHeight - 160)) { 

 item.src = item.getAttribute("data-original") 

             } 

       } 

 } 

 lazyload(); //页面加载时把当前视口中的图片加载进来 

 document.addEventListener('scroll', lazyload);}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 懒加载的原理: 图片预加载:就是在网页全部加载之前,提前加载图片,当用户需要查看时可直接从本地缓存中渲染,以提供给...
    朝树阅读 3,987评论 0 24
  • 我们在做项目的时候,经常会遇到这样一个需求:通过查询条件查出一个列表,每个列表项的左边是一个图片,右边是该项对应的...
    Waitingforyu阅读 557评论 0 6
  • 懒加载 什么是懒加载 懒加载其实就是延迟加载,是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区...
    grain先森阅读 2,647评论 0 79
  • 首先是在img结构中加入“data-xxx”如下: JavaScript部分: var num = d...
    醉死方休丶阅读 241评论 0 0
  • 原理 一开始将img标签的src设置为一张默认图片,将真实的图片地址放在data-src上,监听滚动事件,当图片进...
    cab240f6e992阅读 578评论 0 0