按需加载,这个词应该都不陌生了。我用到你的时候,你才出现就可以了。对于一个很多图片的网站,按需加载图片是优化网站性能的一个关键点。减少无效的http请求,提升网站加载速度。
感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析,讲解,该系列还在不断更新中。
实现效果
- 带loading效果
- 完整版效果
在可视区域外的图片还显示的是loading图片
当图片进入到可视区域的时候,就替换成了对应真实的图片。
代码实现
<ul id="ul1">
<li>
<img _src="./images/1.jpg" alt="" srcset="" src="./images/9.gif">
</li>
<li>
<img _src="./images/2.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/3.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/4.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/5.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/6.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/7.jpg" alt="" src="./images/9.gif">
</li>
<li>
<img _src="./images/1.jpg" alt="" srcset="" src="./images/9.gif">
</li>
<li>
<img _src="./images/2.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/3.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/4.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/5.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/6.jpg" alt="" src="./images/9.gif">
</li> <li>
<img _src="./images/7.jpg" alt="" src="./images/9.gif">
</li>
</ul>
- UI页面美化
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
li{
width: 300px;
height: 250px;
float: left;
margin: 10px 0 0 10px;
}
img{
width: 100%;
height: 100%;
}
- 核心js脚本
var oUl = document.getElementById('ul1');
var aImg = oUl.getElementsByTagName('img');
showImage()
function showImage(){
const sTop = document.documentElement.scrollTop || document.body.scrollTop;
for(var i=0;i<aImg.length;i++){
if(getTop(aImg[i]) < sTop + document.documentElement.clientHeight && !aImg[i].isLoad){
aImg[i].src = aImg[i].getAttribute('_src');
aImg[i].isLoad = true;
}
}
}
这样,我们就实现了一个图片懒加载按需加载的效果