Lazy Load 延迟加载图片的 jQuery 插件


Posted in Javascript onFebruary 06, 2010

怎样使用?
Lazy Load 依赖于 jQuery. 请将下列代码加入页面 head 区域:

     
<script src="jquery.js" type="text/javascript"></script> 
<script src="jquery.lazyload.js" type="text/javascript"></script>

并且在你的执行代码中加入下面语句:
     
$("http://www.appelsiini.net/projects/lazyload/img").lazyload();

这将使 id="http://www.appelsiini.net/projects/lazyload/img" 区域下的图片将被延迟加载.
设置敏感度
插件提供了 threshold 选项, 可以通过设置临界值 (触发加载处到图片的距离) 来控制图片的加载. 默认值为 0 (到达图片边界的时候加载).
     
$("http://www.appelsiini.net/projects/lazyload/img").lazyload({ threshold : 200 });

将临界值定为 200, 当可视区域离图片还有 200 个象素的时候开始加载图片. (这一句原文的字面意思和本人理解不一致, 原文: Setting threshold to 200 causes image to load 200 pixels before it is visible.)
占位图片
你还可以设定一个占位图片并定义事件来触发加载动作. 这时需要为占位图片设定一个 URL 地址. 透明, 灰色和白色的 1x1 象素的图片已经包含在插件里面.
     
$("img").lazyload({ placeholder : "img/grey.gif" });

事件触发加载
事件可以是任何 jQuery 时间, 如: click 和 mouseover. 你还可以使用自定义的事件, 如: sporty 和 foobar. 默认情况下处于等待状态, 直到用户滚动到窗口上图片所在位置. 在灰色占位图片被点击之前阻止加载图片, 你可以这样做:
$("img").lazyload({ 
    placeholder : "img/grey.gif", 
    event : "click" 
});

使用特效
当图片完全加载的时候, 插件默认地使用 show() 方法来将图显示出来. 其实你可以使用任何你想用的特效来处理. 下面的代码使用 FadeIn 效果. 这是演示页面.
$("img").lazyload({ 
    placeholder : "img/grey.gif", 
    effect : "fadeIn" 
});

图片在容器里面
你可以将插件用在可滚动容器的图片上, 例如带滚动条的 DIV 元素. 你要做的只是将容器定义为 jQuery 对象并作为参数传到初始化方法里面. 这是水平滚动演示页面和垂直滚动的演示页面.
CSS 代码:
#container { 
    height: 600px; 
    overflow: scroll; 
}

JavaScript 代码:
$("img").lazyload({ 
     placeholder : "img/grey.gif", 
     container: $("#container") 
});

当图片不顺序排列
滚动页面的时候, Lazy Load 会循环为加载的图片. 在循环中检测图片是否在可视区域内. 默认情况下在找到第一张不在可见区域的图片时停止循环. 图片被认为是流式分布的, 图片在页面中的次序和 HTML 代码中次序相同. 但是在一些布局中, 这样的假设是不成立的. 不过你可以通过 failurelimit 选项来控制加载行为.
     
$("img").lazyload({ 
    failurelimit : 10 
});

将 failurelimit 设为 10 令插件找到 10 个不在可见区域的图片是才停止搜索. 如果你有一个猥琐的布局, 请把这个参数设高一点.
延迟加载图片
Lazy Load 插件的一个不完整的功能, 但是这也能用来实现图片的延迟加载. 下面的代码实现了页面加载完成后再加载. 页面加载完成 5 秒后, 指定区域内的图片会自动进行加载. 这是延迟加载演示页面.
$(function() { 
    $("img:below-the-fold").lazyload({ 
        placeholder : "img/grey.gif", 
        event : "sporty" 
    }); 
}); 
$(window).bind("load", function() { 
    var timeout = setTimeout(function() {$("img").trigger("sporty")}, 5000); 
});

下载插件
最新版本: 源代码, 压缩的代码, 打包的代码
已知问题
由于 webkit 的 bug #6656, Lazy Load 在 Safari 和 Chrome 中无法使用. 它会立即为你加载所有你愿意和不愿意被载入的图片.
貌似 jQuery 1.3.x 令插件在 IE 中失效了. 所有图片将在后台被加载即使它们不应该被加载. 作者正在为解决这个问题而努力, 在此期间只能停留在 jQuery 1.2.6 中使用该插件.
还有, 如果你使用 Mint, 请将 mint 标签加在页面头部, 如果把 mint 标签加到页面结尾会干扰到 Lazy Load 插件. 这是一个相当罕见的问题, 如果有人找到解决办法请联系作者.
Javascript 相关文章推荐
基于jQuery的左右滚动实现代码
Dec 03 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
JS实现div内部的文字或图片自动循环滚动代码
Apr 19 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
Vue 组件参数校验与非props特性的方法
Feb 12 Javascript
taro开发微信小程序的实践
May 21 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
Feb 06 #Javascript
利用jQuery 实现GridView异步排序、分页的代码
Feb 06 #Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 #Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 #Javascript
JavaScript学习笔记(十七)js 优化
Feb 04 #Javascript
jQuery生成asp.net服务器控件的代码
Feb 04 #Javascript
javascript两段代码,两个小技巧
Feb 04 #Javascript
You might like
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php时间戳转换的示例
2014/03/31 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
几个高效,简洁的字符处理函数
2007/04/12 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
用console.table()调试javascript
2014/09/04 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
微信小程序的分类页面制作
2017/06/27 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
Python中functools模块的常用函数解析
2016/06/30 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
项目开发计划书
2014/01/09 职场文书
便利店投资创业计划书
2014/02/08 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
公司收款委托书范本
2014/09/20 职场文书
满月酒邀请函
2015/01/30 职场文书
推广普通话的宣传语
2015/07/13 职场文书