当我们进入到某个页面的时候,会有许多的图片,有些图片可能在下面,当我们点进页面但没有滑动全部展示时,其实下面的图片是没有作用的,这个时候如果说加载了也相当于白加载,而且还降低了网页的加载速度。滚动加载就是不需要展示的图片可以先不展示,滚动到指定位置的时候再加载;今天跟大家分享二种方式,一是滚动条到底部时去加载对应的数据,二是使用懒加载; 实现效果图 一、怎么实现滚动条到底部时去加载? 实现原理以及代码展示: 1)先请求第一页的数据 $.ajax({ type:'get', //请求类型 url:'http://127.0.0.1:8088/ list?page =1', //接口文档 dataType:'json',//返回值类型 //data:data, success:function(data){ $.each(data,function(index,item){ //index 索引 item 当前元素 $(".index-main ul").append('<li class="lists">'+ '<img src="'+item. img_url+'" width="150" height="150">'+ '<label>'+ '<b class="discount">'+item. uprice+'</b>'+ '<span class="price-text">'+item. price+'</span> '+ '</label> '+ '</li>') }); }, error:function(error){ console.log(error) } }); 2)当滚动条移至底部时触发请求下一页的数据 $(window).scroll(function(){ var scrollTop = $(this).scrollTop(); //滚动条距离顶部的高度 var scrollHeight = $(document).height(); //当前页面的总高度 var clientHeight = $(this).height(); //当前可视的页面高度 if(scrollTop + clientHeight >= scrollHeight){ //距离顶部+当前高度 >=页面总高度 即滚动条到达底部 //再请求对应的数据 }); 这样就可以实现鼠标移至底部加载下一页的数据~~~ 二、懒加载 1、为什么要使用懒加载 懒加载就是只有滚动到可视区域时才加载当前的图片,也就是说不是一次性加载所有的图片,从而在一程度减少服务端的请求及带宽; 2、懒加载的优点: 提高前端性能,图片在需要的时候才加载,减轻服务的负担,提高页面的加载速度,能够减少带宽 3、实现原理 图片的加载是由src的值引起的,当对src赋值时浏览器会请求图片资源,基于这个,可以利用html5的属性data-xxx来保存图片的路径,当我们需要加载图片的时候才将data-xxx的值赋予src,就能实现图片的按需加载,也就是懒加载了; 懒加载的方法有很多,这里推荐使用jquery图片延迟加载jquery.lazyload 1)使用方法 引用jquery和jquery.lazyload.js到你的页面 <script src="js/jquery-1.11.1.min.js"></script> <script src="js/jquery.lazyload.js"></script> 2)html图片调用方法 为图片加入样式lazy 图片路径引用方法用data-original 1. 将图片路径写入data-original属性 <img data-original="img/1.jpg" /> 2. 选择所有要lazyload的图片(img.lazy),执行lazyload(); $("img").lazyload(); 3、常用方法设置 1)提前加载——Threshold lazyload默认是当滚动到该图片位置时,加载该图片。但是可以通过设置Threshold参数来实现滚到距离其xx px时就加载。 $("img.lazy").lazyload({ threshold :20 }); 2)设定效果——Effects 插件默认的加载效果是 show() ,你可以使用任何你想要的效果。下面的代码使用了 fadeIn() $("img.lazy").lazyload({ effect : "fadeIn" }); 4、当前实例的具体代码如下: //按需加载 $.ajax({ type:'get', //请求类型get post put delete url:'http://127.0.0.1:8088/ list’, //接口文档 dataType:'json',//返回值类型 //data:data, success:function(data){ $.each(data,function(index,item){ $(".index-main ul").append('<li class="lists">'+ '<img data-original="'+item.product_img_url+'" width="150" height="150">'+ '<label>'+ '<b class="discount">'+item.product_uprice+'</b>'+ '<span class="price-text">'+item.product_price+'</span> '+ '</label> '+ '</li>') }); //懒加载 $(".index-main ul img").lazyload({ effect:'fadeIn' //淡入效果 }) }, error:function(error){ console.log(error) } }); 注:如果想添加加载动画 转发+关注我吧,每天更新web前端干货知识,原创需要大家的支持,你们的支持是我更新最大的动力!