什么是图片懒加载:
定义:
当打开一个有很多图片的页面时,先只加载页面上看到的图片,等滚动到页面下面时,再加载所需的图片。这就是图片懒加载。
作用:
减少或延迟请求数,缓解浏览器的压力,增强用户体验
如何实现:
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]’)选中已加载的图片不需要重新加载
若有疑问,及时提问哦
小作者在持续更新中…