js---《实现图片的懒加载》

什么是图片懒加载:

定义

当打开一个有很多图片的页面时,先只加载页面上看到的图片,等滚动到页面下面时,再加载所需的图片。这就是图片懒加载。

作用:

减少或延迟请求数,缓解浏览器的压力,增强用户体验

如何实现:

1.设置图片src属性为同一张图片,同时自定义一个data-src属性来存储图片的真实地址
2.页面初始化显示的时候或者浏览器发生滚动的时候判断图片是否在视野中
3.当图片在视野中时,通过js自动改变该区域的图片的src属性为真实地址

看代码:

html部分:

<div class='container'>
	<img src=''>//‘’其中写相同的图片
	。
	。
	。
	。
	。
	。
	。
	。
	。
	。
	<img src=''>//‘’其中写相同的图片
	
</div>
<style>
.container{
	max-width:800px;
	margin:0 auto;
}
.container:after{
	content:'';
	display:block;
	clear:both;
}
.container img{
	float:left;
	width:50%;
}
h1{
	clear:both
}
/*ps:img都是浮动,如果不清楚浮动,h1的值高度就相当于container里面最高的,不是实际的数值*/
</style>

js代码:

<script>
	start()//一开始没有滚动,也需要触发一次
	$(window).on('scroll',function(){//滚动时,显示对应图片
		start()
	})
	function start(){
		//not('[data-isLoaded]')选中已加载的图片不需要重新加载
		$('.container img').not('[data-isLoaded]').each(function(){
			var $node=$(this)
			if(isShow($node)){
				loadImg($node)
			}
		})
	}
	
	function isShow($node){//判断图片是否在视野中
		return $node.offset().top<=$(window).height()+$(window).scrollTop()
	}
	//$node.offset().top元素相对于顶点的距离,
	//$(window).scrollTop()滚动的距离
	//$(window).height()窗口高度
	
	function loadImg($img){
	//.attr()
	//.attr(属性名称,值)
		$img.attr('src',$img.attr('data-src'))//把data-src的值 赋值给src
		$img.attr('data-isLoaded',1)//区别图片是否被加载过,防止重新加载
	}

</script>

// $ node.offset().top元素相对于顶点的距离,
//$(window).scrollTop()滚动的距离
// $ (window).height()窗口高度
//.attr(值)
//.attr(属性名称,值)
//not(‘[data-isLoaded]’)选中已加载的图片不需要重新加载

若有疑问,及时提问哦

小作者在持续更新中…

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漠媂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值