为什么要图片懒加载, 当一个页面图片数量多,而且比较大,少说百来K,多则上兆的时候。 要是页面载入就一次性加载完毕。 就会非常慢。所以,我们得做点什么,避免这种糟糕的状况发生。 目前很流行的做法就是滚动动态加载, 显示屏幕之外的图片默认是不加载的,随着页面的滚动, 这个要显示图片的区域进入了浏览器可是窗口范围,则触发图片的加载显示。 这种做法的好处是,一是页面加载速度快,二是节约了流量,因为不可能每个用户浏览页面时从头滚到尾的。
那么如何使用jquery实现图片懒加载呢?
首先要书写css代码
css代码
<style>
img.lazy
{
visibility: visible;
opacity: 0.00;
filter: alpha(opacity=0);
-moz-opacity: 0.0;
}
</style>html代码
将img标签内的src属性修改为data-original, 给img标签添加 class = "lazy" 属性;
关键js代码与说明
<script>
$(function () {
imgLazyLoad(); //初始化
$(document).scroll(imgLazyLoad); //当滚动条滚动时,扫描需要加载的div
//扫描需要加载的div
function imgLazyLoad() {
$.each($("body img.lazy"), function (i, o) {
//获取窗口高度
var windowHeight = $(window).height(); //windowHeight = windowHeight/2; 设置滚动条在显示屏幕高度2分之1的时候加载图片
//获取滚动条
var scrollTop = $(document).scrollTop();
//先判断是否是加载完的图片 跳出
if ($(o).attr("src") == $(o).attr("data-original")) {
return true;
} else if ($(o).offset().top <= (scrollTop + windowHeight) && $(o).offset().top >= scrollTop) {//判断div是不是出在可见的位置
if ($(o).attr("data-original") != undefined || $(o).attr("data-original") != "undefined") {
var ObjectSrc = $(o).attr("data-original");
//把pic的值赋给src值
$(o).attr("src", ObjectSrc);
//css属性改为可见
$(o).css("visibility", "visible");
//渐变时间和渐变值
$(o).fadeTo(1000, 1.00);
}
}
});
}
});
</script>
