JavaScript中的懒加载
一.为什么要使用懒加载?
像淘宝网站等,页面中有着大量图片,一次性全部加载这些图片会使浏览器发送大量请求和造成浪费。采用懒加载技术,即用户浏览到哪儿,就加载该处的图片。这样节省网络资源、提升用户体验、减少服务器压力。
图片懒加载优势:
- 增强用户体验
- 优化代码
- 减少http的请求
- 减少服务器端压力
- 服务器的按需加载
图片懒加载原理:
先将图片的src设置为同一张图片或者不设置,同时给img标签设置一个特殊属性,例如:data-src用于存放图片的真实预览地址;若图片未进入可视区域时,展示同一张图片或者直接不展示图片,此时就不会发生http请求,当图片进入可视区域时,将data-src上的值赋给src,此时再发送http请求。
关键:判断图片是否进入到可视区域(关键函数)
二.懒加载源码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
img{
height: 333px;
margin-left: -600px;
transition: all 5s;
}
</style>
</head>
<body>
<ul>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
<li><img src="" alt="" data-src="01.jpg"></li>
</ul>
<script>
// 可见区域高度
const viewHeight=document.documentElement.clientHeight;
function lazyload(){
// 获取图片
const img=document.getElementsByTagName("img")
for(let e of img){
// getBoundingClientRect()方法返回元素的大小及其相对于视口的位置。
const rect=e.getBoundingClientRect()
if(rect.bottom>=0&&rect.top<viewHeight){
// getAttribute() 方法返回指定属性名的属性值
e.src=e.getAttribute("data-src");
e.style.marginLeft="0px"
}
}
}
lazyload(); //刚开始还没有滚动屏幕时,要先触发一次函数,初始化首页的页面图片
document.addEventListener("scroll",lazyload);//当滚动条移动时,触发事件
</script>
</body>
</html>
先将图片的src设置为同一张图片或者不设置,同时给img标签设置一个特殊属性,例如:data-src用于存放图片的真实预览地址;若图片未进入可视区域时,展示同一张图片或者直接不展示图片,此时就不会发生http请求,当图片进入可视区域时,将data-src上的值赋给src,此时再发送http请求。
熟悉以下API的话,任何根据懒加载的原理,就能非常轻松的实现一个网页懒加载