图片懒加载(必须指定div的高度,否则有offsetTop有误差)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
* {
padding: 0;
margin: 0;
}
div {
height: 300px;
width: 300px;
}
</style>
<body>
<div>
<img src="../img/default.jpg" width="100%" height="100%" alt="" data="../img/1.jpg">
</div>
<div>
<img src="../img/default.jpg" width="100%" height="100%" alt="" data="../img/2.jpg">
</div>
<div>
<img src="../img/default.jpg" width="100%" height="100%" alt="" data="../img/3.jpg">
</div>
<div>
<img src="../img/default.jpg" width="100%" height="100%" alt="" data="../img/4.jpg">
</div>
<div>
<img src="../img/default.jpg" width="100%" height="100%" alt="" data="../img/5.jpg">
</div>
<div>
<img src="../img/default.jpg" alt="" data="../img/6.jpg">
</div>
<script>
let imgs = document.querySelectorAll('img');
// 可视区高度
let clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
function lazyLoad() {
// 滚动卷去的高度
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
for (let i = 0; i < imgs.length; i++) {
// 图片在可视区冒出的高度
let x = clientHeight + scrollTop - imgs[i].offsetTop;
// 图片在可视区内
console.log(i, imgs[i].offsetTop);
if (x > 0 && x < clientHeight + imgs[i].height) {
imgs[i].src = imgs[i].getAttribute('data');
}
}
}
lazyLoad();
window.onscroll = function () {
lazyLoad();
}
</script>
</body>
</html>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。