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 相关文章推荐
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
转换字符串为json对象的方法详解
Nov 29 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
Mar 13 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
ES6概念 ymbol.for()方法
Dec 25 Javascript
微信小程序实现登录页云层漂浮的动画效果
May 05 Javascript
jQuery中$原理实例分析
Aug 13 jQuery
element el-input directive数字进行控制
Oct 11 Javascript
Nuxt.js开启SSR渲染的教程详解
Nov 30 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
Vue实现返回顶部按钮实例代码
Oct 21 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
改变Apache端口等配置修改方法
2008/06/05 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
测试php函数的方法
2013/11/13 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
vue拖拽组件使用方法详解
2018/12/01 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
对于Python的Django框架部署的一些建议
2015/04/09 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
劳资员岗位职责
2013/11/11 职场文书
大学校运会广播稿
2014/02/03 职场文书
销售目标责任书
2014/07/23 职场文书
语文课外活动总结
2014/08/27 职场文书
庆祝教师节标语
2014/10/09 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL