详解jQuery lazyload 懒加载


Posted in Javascript onDecember 19, 2016

Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的.

在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担.

           Demo页面:

           基本选项

           淡入效果

           对不支持JavaScript浏览器的降级处理

           水平滚动

           容器内水平滚动

           容器内垂直滚动

           页面内存在N多图片

           经过五秒钟的延迟后加载图片

           用AJAX来加载图片

如何使用

Lazy Load 依赖于 jQuery. 请将下列代码加入HTML的结尾,也就是</body>前:

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

你必须改变图片的标签。图像的地址必须放在data-original属性上。给懒加载图像一个特定的class(例如:lazy)。这样你可以很容易地进行图像插件捆绑。代码如下:

<img class="lazy" alt="" width="640" height="480" data-original="img/example.jpg" />
$(function() {
 $("img.lazy").lazyload();
});

这将使所有 class 为 lazy 的图片将被延迟加载.

Demo:基本选项

TIPS:这里必须设置图片的width和height,否则插件可能无法正常工作。

设置临界点

默认情况下图片会出现在屏幕时加载. 如果你想提前加载图片, 可以设置threshold 选项, 设置 threshold 为 200 令图片在距离屏幕 200 像素时提前加载.

$("img.lazy").lazyload({
 threshold : 200
});

设置事件来触发加载

你可以使用jQuery事件,例如click和mouseover。也可以使用自定义事件,如sporty、foobar默认情况下是要等到用户向下滚动并且图像出现在视口中时。只有当用户点击它们才加载图片:

$("img.lazy").lazyload({
 event : "click"
});

Demo:经过五秒钟的延迟后加载图片

使用特效

默认情况下,插件等待图像完全加载并调用show()。你可以使用任何你想要的效果。下面的代码使用fadeIn (淡入效果)。

Demo:淡入效果

$("img.lazy").lazyload({
 effect : "fadeIn"
});

针对不启用JavaScript的情况

几乎所有浏览器的 JavaScript 都是激活的. 然而可能你仍希望能在不支持 JavaScript 的客户端展示真实图片. 当浏览器不支持 JavaScript 时优雅降级, 你可以将真实的图片片段在写 <noscript> 标签内.

<img class="lazy" data-original="img/example.jpg" width="640" heigh="480">
<noscript><img src="img/example.jpg" width="640" heigh="480"></noscript>

可以通过 CSS 隐藏占位符.

.lazy {
 display: none;
}

在支持 JavaScript 的浏览器中, 你必须在 DOM ready 时将占位符显示出来, 这可以在插件初始化的同时完成.

$("img.lazy").show().lazyload();

图片在容器里面

你可以将插件用在可滚动容器的图片上, 例如带滚动条的 DIV 元素. 你要做的只是将容器定义为 jQuery 对象并作为参数传到初始化方法里面.

Demo:容器内水平滚动, 容器内垂直滚动

当图像不连续时

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

$("img.lazy").lazyload({
 failure_limit : 10
});

将 failurelimit 设为 10 ,令插件找到 10 个不在可见区域的图片时才停止搜索. 如果你有一个猥琐的布局, 请把这个参数设高一点.

加载隐藏的图片

可能在你的页面上埋藏可很多隐藏的图片. 比如插件用在对列表的筛选, 你可以不断地修改列表中各条目的显示状态. 为了提升性能, Lazy Load 默认忽略了隐藏图片. 如果你想要加载隐藏图片, 请将 skip_invisible 设为 false

$("img.lazy").lazyload({ 
 skip_invisible : false
});

下载插件

最新版本 源代码和压缩代码. 插件已经在 OSX 的 Safari 5.1, Safari 6, Chrome 20, Firefox 12 浏览器上, Windows 的 Chrome 20, IE 8 and IE 9 浏览器上, 以及 iOS5 (iPhone 和 iPad) 的 Safari 5.1 浏览器上测试过.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 数组的 uniq 方法
Jan 23 Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
再论Javascript下字符串连接的性能
Mar 05 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
Jun 21 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
Jun 29 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
Nov 06 Javascript
Preload基础使用方法详解
Feb 03 Javascript
JS实现滑动门效果的方法详解
Dec 19 #Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 #Javascript
简单理解js的冒泡排序
Dec 19 #Javascript
JS瀑布流实现方法实例分析
Dec 19 #Javascript
移动端日期插件Mobiscroll.js使用详解
Dec 19 #Javascript
JavaScript闭包和范围实例详解
Dec 19 #Javascript
JS前端笔试题分析
Dec 19 #Javascript
You might like
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php开发文档 会员收费1期
2012/08/14 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
小学家长会邀请函
2014/01/23 职场文书
社区文化建设方案
2014/05/02 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
高三语文教学反思
2016/02/16 职场文书