图片懒加载实现
现在网站页面内容越来越丰富,图片内容也越来越多,而图片过多会导致网页文件过大,从而引发加载缓慢的问题,而图片懒加载就是为解决这一问题而生。
首先我们来讲Jquery的懒加载控件
jQuery lazyload.JS
jQuery lazyload.JS 地址:https://github.com/helijun/helijun/blob/master/plugin/lazyLoad/jquery.lazyload.js 直接复制源码到本地
jQuery lazyload.JS是用 jQuery编写的一个控件,所以要运行 jQuery lazyload.JS必须先载入 jQuery
1、请将下列代码加入</body>前:
<script type=
"text/javascript"
src=
"jquery.lazyload.js"
></script>
代码如下:
<img class=
"lazy"
alt=
""
width=
"800"
height=
"5000"
data-original=
"img/lazy1.jpg"
/>
$(
function
() {
$(
"img.lazy"
).lazyload();
});
$(
"img.lazy"
).lazyload({
threshold : 200
});
$(
"img.lazy"
).lazyload({
event :
"click"
});
$(
"img.lazy"
).lazyload({
effect :
"fadeIn"
});
$(
"img.lazy"
).lazyload({
failure_limit : 2
});
$(
"img.lazy"
).lazyload({
skip_invisible :
false
});
<style type="text/css">
img {
width: 100%;
}
.lazy{display: none;}
</style>
<img src="lun1.jpg" alt=""><br>
<img src="lun2.jpg" alt=""><br>
<img data-original="lun1.jpg" class="lazy" alt=""><br>
<noscript><img src="lun1.jpg" alt=""></noscript>
<img data-original="lun4.jpg" class="lazy" alt=""><br>
<noscript><img src="lun4.jpg" alt=""></noscript>
<img data-original="lun5.jpg" class="lazy" alt=""><br>
<noscript><img src="lun5.jpg" alt=""></noscript>
<img data-original="lun4.jpg" class="lazy" alt=""><br>
<noscript><img src="lun4.jpg" alt=""></noscript>
<img data-original="lun2.jpg" class="lazy" alt=""><br>
<noscript><img src="lun2.jpg" alt=""></noscript>
<img data-original="lun1.jpg" class="lazy" alt="">
<noscript><img src="lun1.jpg" alt=""></noscript>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src='jqueryLazyload.js'></script>
<script type="text/javascript">
$(function() {
$("img.lazy").show().lazyload({
effect:'fadeIn'
});
});
</script>
jq的懒加载大家看懂后,就可以尝试手动写懒加载效果:
其实懒加载的原理非常的简单:初次加载页面时只加载用户能看到的图片,而其他的图片等用户需要看时再加载。
首先将需要懒加载的图片先设置空的路径地址,并且设置display:none;让其隐藏;
<img class="lazy" id='lazy1' alt="" src=""/>
<img class="lazy" id='lazy2' alt="" src=""/>
.lazy{display:none}
这样在初次加载时由于路径为空,图片无法加载出来,并且因为图片被隐藏,所以也不会占用页面空间。
那么接下来就是实现懒加载的js部分了,这里有两种方式,可以根据需求灵活使用:
1、通过$(document).ready()方法,在页面加载完成后给图片添加路径,并取消隐藏:
$(document).ready(function(){
$('#lazy1').attr('src','/Template/xpshop_currents/Images/haohuiduo.jpg');
$('#lazy1').show();
})
2、通过监听鼠标页面滚动距离来加载图片
$(window).scroll(function(){
$('#lazy2').attr('src','/Template/xpshop_currents/Images/jiazhi.jpg');//鼠标滚动立即加载
if ($('#lazy2').offset().top - $(document).scrollTop()<1) {//鼠标滚动到合适的位置时将图片显示出来,可以设定自己想要的动画效果
$('#lazy2').fadeIn();
};
$('#lazy3').attr('src','/Template/xpshop_currents/Images/weibu.jpg');
if ($('#lazy3').offset().top - $(document).scrollTop()<1) {
$('#lazy3').fadeIn();
};
})