原生js实现图片懒加载代码

原生js实现图片懒加载代码


将代码复制粘贴到编辑器, 将图片地址修改为自己的图片地址即可。

<div class="container"></div>
*{
	margin: 0;
	padding: 0;
}
.container{
	overflow: hidden;
	width: 100%;
}
.img_item{
	float: left;
	text-align: center;
	width: 25%;
	height: 592px;
	margin-bottom: 40px;
}
.img_item>div{
	display: none;
	line-height: 30px;
}
// 渲染页面
var html =``;
var container=document.getElementsByClassName('container')[0];
for(var i=0;i<30;i++){
	html=html+`
		<div class="img_item">
			<img data-src="images/1.png" alt="" />
			<div>我是第1张图片</div>
		</div>
	`;
}
container.innerHTML=html;


// 懒加载实现
function lazy_loading() {
	var doc = document;
	var win = window;
	// clientHeight是元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距
	var clientHeight = doc.documentElement.clientHeight || doc.body.clientHeight;
	var html_scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop || win.pageYOffset;
	var img_item = doc.querySelectorAll('.img_item>img');
	var img_describe = doc.querySelectorAll('.img_item>div');
	var img_item_len = img_item.length;
	for (var i = 0; i < img_item_len; i++) {
		// Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。
		var img_itemRect = img_item[i].getBoundingClientRect();
		var data_src = img_item[i].getAttribute('data-src');
		//当元素的offsetTop-html_scrollTop<clientHeight时元素在可是区域内
		//或者当元素的getBoundingClientRect().top<clientHeight时元素在可是区域内
		if (img_itemRect.top < clientHeight - 100) { //主要的事情说三遍:在你的正式代码中不要-100,在你的正式代码中不要-100,在你的正式代码中不要-100,我这只是为了看效果
			img_item[i].setAttribute('src', data_src);
			img_describe[i].style.display = 'block';
		}
	}
}
lazy_loading(); //第一次加载
if (window.attachEvent) {
	window.attachEvent('onscroll', function() {
		lazy_loading();
	})
} else {
	window.addEventListener('scroll', function() {
		lazy_loading();
	})
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值