在项目优化中,我们应该减少http的请求,实现懒加载,现在我们用js 实现一个懒加载的功能
我们一共有7张图片和一张加载的图片。
<body>
<div>
<img src="./img/loading.jpg" data-src="./img/cat1.jpg">
<img src="./img/loading.jpg" data-src="./img/cat2.jpg">
<img src="./img/loading.jpg" data-src="./img/cat3.jpg">
<img src="./img/loading.jpg" data-src="./img/cat4.jpg">
<img src="./img/loading.jpg" data-src="./img/cat5.jpg">
<img src="./img/loading.jpg" data-src="./img/cat6.jpg">
<img src="./img/loading.jpg" data-src="./img/cat7.jpg">
</div>
</body>
// 我们开监听窗口的滚动,触发懒加载
<script>
const img = document.getElementsByTagName("img")
let n = 0
console.log(img[2].offsetTop);
const lazyLoad = ()=>{
// 窗口滚动时触发
console.log('懒加载');
const seeHeight = document.documentElement.clientHeight // 可见区
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop // 滚轮的距离
for(let i = n;i<img.length;i++){
console.log(img[i].offsetTop );
console.log(seeHeight,'+',scrollTop);
if(img[i].offsetTop < seeHeight + scrollTop){
if(img[i].getAttribute("src") == "./img/loading.jpg"){
img[i].src = img[i].getAttribute("data-src")
}
n = i+1
}
}
}
lazyLoad()
window.onscroll = lazyLoad
</script>
当我们进入页面的时候就只会加载到我们可视区的图片和loading图片
然后往下划就会加载新的图片