JavaScript 懒加载图片

1.什么是懒加载

当图片出现在可视区域时才加载图片。

2.懒加载实现方式

核心:可视区域(clientHeight)+滚动条距离顶部高度(scrollTop) > 元素到顶部距离(offsetTop)

0.获取元素到顶部的距离(offsetTop)
1.监听滚动
2.在滚动方法里,实时获取可视区域(clientHeight) 和 滚动条距离顶部高度(scrollTop)

3.对单个img进行懒加载

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			body{
				margin: 0px;
			}
		</style>
	</head>
	<body>
		<div style="width: 100px;height: 100px;margin-top: 1200px;">
			<img data-src="img01.png" width="100px" height="100px" style="margin-top: 1200px;" id="img01"/>
		</div>
		
		<script type="text/javascript">
			var img01=document.getElementById('img01');
			
			window.οnscrοll=function () {
				//元素距离顶部的高度
				var oHeight=img01.offsetTop;
				//可视区域
				var height=document.documentElement.clientHeight;
				//滚动条距离顶部高度
				var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
				if (height+scrollTop>oHeight) {
					img01.src=img01.getAttribute("data-src");
				}
			}
		</script>
	</body>
</html>

4.对多个标签进行懒加载

在需要懒加载的img标签的class属性添加上“lazyLoad”
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			body{
				margin: 0px;
			}
		</style>
	</head>
	<body>
		<div style="width: 100px;height: 100px;margin-top: 100px;">
			<img data-src="img01.png" width="100px" height="100px" style="margin-top: 1px;" class="lazyLoad"/>
		</div>
		<div style="width: 100px;height: 100px;margin-top: 300px;">
			<img data-src="img01.png" width="100px" height="100px" style="margin-top: 1px;" class="lazyLoad"/>
		</div>
		<div style="width: 100px;height: 100px;margin-top: 300px;">
			<img data-src="img01.png" width="100px" height="100px" style="margin-top: 1px;" class="lazyLoad"/>
		</div>
		<div style="width: 100px;height: 100px;margin-top: 300px;">
			<img data-src="img01.png" width="100px" height="100px" style="margin-top: 1px;" class="lazyLoad"/>
		</div>
		
		<script type="text/javascript">
			var imgArray=document.getElementsByClassName("lazyLoad");
			var len=imgArray.length;
			
			for (var i = 0; i < len; i++) {
				var oHeight=imgArray[i].offsetTop;
				//可视区域
				var height=document.documentElement.clientHeight;
				if (oHeight<height) {
					imgArray[i].src=imgArray[i].getAttribute("data-src");
				}
			}
			
			window.οnscrοll=function(){
				for (var i = 0; i < len; i++) {
					var oHeight=imgArray[i].offsetTop;
					//可视区域
					var height=document.documentElement.clientHeight;
					//滚动条距离顶部高度
					var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
					if (height+scrollTop>oHeight) {
						if (imgArray[i].src=="") {
							imgArray[i].src=imgArray[i].getAttribute("data-src");
						}
					}
				}
			};
		</script>
	</body>
</html>


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值