使用 IntersectionObserver实现图片懒加载
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
* {
padding: 0px;
margin: 0px;
}
.frist {
width: 100%;
height: 100vh;
background-color: blueviolet;
}
</style>
</head>
<body>
<div>
<div class="frist"></div>
<div>位置1</div>
<img src="" data-src="../img/1结果.png" alt="" />
<div>位置2</div>
<img src="" data-src="../img/Snipaste_2021-10-18_09-27-06.png" alt="" />
<div>位置3</div>
<img src="" data-src="../img//Snipaste_2023-03-27_19-58-56.jpg" alt="" />
<div>位置4</div>
</div>
<script>
const observer = new IntersectionObserver((changes) => {
changes.forEach((change) => {
if (change.isIntersecting) {
const img = change.target
img.src = img.dataset.src
observer.unobserve(img)
}
})
})
document.querySelectorAll('img').forEach((item) => {
observer.observe(item)
})
</script>
</body>
</html>
intersectionObserver Api