1.懒加载使用场景
相信大家都使用过qq或者微信的一个功能,那就是qq空间,朋友圈。如果说我们一次性将所有的好友,发过的全部的动态一次性全部加载出来,请求的数据量肯定是很大的,就算后端性能优化的很好,请求速度很快,前端渲染到页面上也是很费时的,而且由于数据量过于庞大,当前窗口肯定是显示不了的,这个时候就需要懒加载登场了。
2.什么是懒加载
经过上面对懒加载使用场景的介绍,相信不难得出懒加载的特性,只请求当前窗口可见的数据或者比当前可视窗口多一部分的数据,渲染的时候也是同样的道理,这样无疑能够减少用户操作的等待时间、得到更好的用户体验。
3.实现方式
页面结构
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<div>
<img class="img" data-src="./img/图片1.jpeg" />
</div>
<div>
<img class="img" data-src="./img/图片2.jpeg" />
</div>
<div>
<img class="img" data-src="./img/图片3.jpeg" />
</div>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<p> 6月25日左右,全国各地陆续公布高考分数,随之而来的志愿填报及录取是很多考生和家长的头等大事。近日,不少高校在2024本科招生政策发布会上介绍了学校本科生转专业的新规,进一步降低学生转专业申请门槛,政策灵活度更高,可选择次数更多。各大高校为何降低转专业申请门槛?这项政策如何更好落地?将给高等教育带来哪些改变和影响?
</p>
<script src="js/new_file.js"></script>
</body>
</html>
3.1 事件监听
大致的实现方式是通过监听scroll事件, 当我们鼠标进行滚动,我们就不断计算图片到视窗上面的距离和窗口显示区的高度, 然后比较这两者的大小,如果窗口显示区的高度小于图片到视窗的距离,那么说明当前的图片是看不到的,如果窗口显示区大于图片到视窗的距离,那么说明图图片已经进入可视范围。
//获取当前的图片
const imgs = document.querySelectorAll('.img')
//监听事件
document.addEventListener('scroll',(e)=>{
const viewHeight = window.innerHeight
imgs.forEach((img)=>{
//计算图片的高度
const imgToTop = img.getBoundingClientRect().top
if(imgToTop<=viewHeight){
//进入可视区域
const data_src = img.getAttribute('data-src')
console.log(data_src);
img.setAttribute('src',data_src)
}
})
})
3.2 IntersectionOberver
这个方法是基于js提供的一个构造方法,第一步就是创建IntersectionObserver的实例,第二步是提供要观察的元素,第三步是完成创建时的回调。这里的页面结构和第一页完全一致
1.我们首先还是将要懒加载的元素给获取到
const imgs = document.querySelectorAll('.img')
2.然后我们就创建IntersectionOberver实例
const observer = new IntersectionObserver(callback)
3.然后我们就将要观察的元素给到这个实例
imgs.forEach((img)=>{
observer.observe(img)
})
4.最后核心的一步
const callback = (entries)=>{
entries.forEach((entry)=>{
console.log(entry);
if(entry.isIntersecting){//判断当前的元素是已经进入可视区域
const img = entry.target //当前的img
const data_src = img.getAttribute('data-src')
console.log(data_src);
img.setAttribute('src',data_src)
observer.unobserve(img)//去除观察
}
})
}
这样我们就有了两种方式对图片懒加载的实现,感谢大家的阅读,如有不太正确或有更好的实现方式,请各位及时指正,谢谢!!!