您的位置:首页 > Web前端 > JQuery

使用jQuery实现图片的懒加载

2018-02-07 11:50 155 查看
       敲了一天的jQuery,感觉自己要疯了,头疼的不行,于是,去你的吧,找些有意思的事情做吧,在网上翻啊翻啊,看到一篇关于图片懒加载的介绍,好吧,相对于学习jQuery实战,这个要有趣的多,于是实现了下,以下是过程。

       首先为啥要用懒加载,不懒我勤快点不行吗?你当然可以,可是在网页上,常常要用到图片,而图片需要消耗较大的流量,正常情况下,浏览器会解析整个HTML代码,然后从上到下依次加载<img src="xxx">的图片标签,如果页面很长,隐藏在页面下方的图片已经被浏览器加载,如果用户不向下浏览,没有看到已加载的图片,图片就相当于白浪费了流量。

        所以淘宝,京东等流量十分巨大的电商,需要使用大量的图片,因此,这些图片都是按需加载,就是用户滚动条滚到哪里,哪里就加载,没有滚到的地方不需要加载,这就是懒加载。

         懒加载的原理就是在输出HTML的时候,不要直接输出<img src="xxx">,而是输入如下标签:

<img src="/static/loading.gif" data-src="http://真正的图片地址/xxx.jpg">         在没有加载的时候显示的一个gif的加载动画,当页面滚动到图片的时候就利用jQuery把img的src属性替换为data-src的内容,浏览器就会实现实时加载。
         代码如下(仿照百度图片的页面):

        首先要在HTML中载入jQuery和underscore

<script type ="text/javascript" src="js/jquery-3.3.1.js"/>
</script>
<script type ="text/javascript" src="js/underscore.js"/>
</script>      并且添加图片,按照如下格式
  <img src="/static/loading.gif" data-src="http://真正的图片地址/xxx.jpg">      js代码:
$(function(){
//获取window的应用
var $window=$(window);
//获取包含data-src属性的img,并以jQuery对象存入数组
var lazyImgs=_.map($('img[data-src]').get(),function(i){
return $(i);
});
var onScroll=function(){
var wtop=$window.scrollTop();
if (lazyImgs.length>0){
//获取页面高度
var wheight=$window.height();
var loadeIndex=[];
//循环数组的每个img元素
_.each(lazyImgs,function($i,index){

if ($i.offset().top - wtop<wheight){
$i.attr('src',$i.attr('data-src'));
//添加待删除的数组
loadeIndex.unshift(index);

}
});
//删除已处理的数组
_.each(loadeIndex,function(index){
lazyImgs.splice(index,1);
});
}
};
//绑定
$window.scroll(onScroll);
onScroll();
});    我们用IE看下效果:
    先是没有使用js的HTML加载效果:



使用了js的HTML加载效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: