利用jQuery.lazyload.js文件实现图片延迟加载

大家在浏览网页的时候有没有发现有的站点页面刷新后,图片处会先显示一张默认图(如 logo 图等)之后随着页面的滚动,开始一张张加载图片。这其实就是图片延迟加载效果,又称之为“图片懒加载”。

图片懒加载原理:先将 img 标签中的 src 链接设为同一张图片(空白图片),将其真正的图片地址存储在 img 标签的自定义属性中(比如 data-src)。当 js 监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到 src 属性中,达到懒加载的效果。

这样做的好处就是,能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题。特别适用于图片角度的页面,页面加速效果非常明显。

这里飞鸟给大家推荐一款优秀的 jQuery 插件来实现图片延迟加载效果——jQuery.lazyload.js,只需要进行简单的部署,就可以轻松让站点实现图片延迟加载效果,特别适用于网站首页等有图片列表的页面。

首先需要将插件引用在页面,如果你的站点已经引用 jQuery 插件,这只需引入 jQuery.lazyload.min.js。

  1. <script src=“jquery-1.8.3.min.js”></script src=
  2. <script src=“jquery.lazyload.min.js”></script src=

之后修改你的 html 结构,给 img 标签增加“lazy”样式(可自定义),设置 src 地址为默认图片地址,而真实的图片需采用 data-original 引用,如下结构

  1. <img class=“lazy” src=“default-img.jpg” data-original=“img/true-img.jpg” ></img 

注意:如果你的默认图片与实际图片大小不一,则需要设置该img 图片的 width 和 height,以免页面加载变形。

之后配置 jQuery,

  1. $(function() {
  2. $(“img.lazy”).lazyload({
  3. effect: “fadeIn”
  4. });
  5. });

如果你给 img 标签自定义的样式不是 lazy,则 js 中的选择器需要修改(js 基础知识,不赘述)

经过 boke112导航测试,以上代码可以直接添加到 jquery.lazyload.min.js 文件最后即可。

另外还有其他参数可供选择

  1. $(“img.lazy”).lazyload({
  2. placeholder : “default-img.kpg”//用图片提前占位
  3. // placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏
  4. effect: “fadeIn”// 载入使用何种效果
  5. // effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
  6. threshold: 200, // 提前开始加载
  7. // threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉
  8. event: ‘click’, // 事件触发时才加载
  9. // event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…
  10. container: $(“#container”), // 对某容器中的图片实现效果
  11. // container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片
  12. failurelimit : 10 // 图片排序混乱时
  13. // failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题.
  14. });

其中 placeholder 参数是指,在你的 html 结构中并没有直接指定 src=”” 路径时,可以通过 js 动态添加。即 html 结构中有占位图片则不需配置该参数,反之可以配置。

完成这些,我们就实现了对页面的图片懒加载部署了。

对于是否真能提高页面性能,飞鸟做了一个小测试,通过 F12开发者工具的 Network 监控,我们看到:页面刷新之初确实没有请求懒加载的图片,而当页面滚到到图片所在位置,页面开始向服务器请求图片。

理论上还是对页面优化有一定作用的,且在视觉效果上也比较个性,非常推荐各位站长朋友使用。