图片懒加载

2022年01月02日1 min read
前端

上代码

<!DOCTYPE html>  
<html>  
	<head>  
		<meta charset="utf-8">  
		<title></title>  
		<style>  
			.kwydy {  
				width: 300px;  
				height: 400px;  
			}  
  
			.kwydy img {  
				width: 100%;  
				height: 100%;  
			}  
		</style>  
	</head>  
	<body>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3059_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3058_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3057_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3056_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3055_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3054_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3053_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3052_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3051_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3050_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3049_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3048_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3047_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3049_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3045_3.jpg"></div>  
		<div class="kwydy"><img data-src="https://kwydy.gitee.io/imgs/preview/3044_3.jpg"></div>  
	</body>  
	<script type="text/javascript">  
		let lazyLoading = document.querySelectorAll("img")  
  
		function lazyLoad() {  
			// 获取屏幕可视区域高度  
			let visualHeight = document.documentElement.clientHeight;  
			// 遍历图片  
			lazyLoading.forEach(e => {  
				if (!e.src) {  
					// getBoundingClientRect()用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。  
					let rect = e.getBoundingClientRect()  
					if (rect.top < visualHeight) {  
						e.src = e.dataset.src  
					}  
				}  
			})  
			// 滚动时加载  
			window.onscroll ?? = lazyLoad  
		}  
		lazyLoad()  
	</script>  
</html>