博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery延迟加载(懒加载)插件 – jquery.lazyload.js
阅读量:5052 次
发布时间:2019-06-12

本文共 2465 字,大约阅读时间需要 8 分钟。

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

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

 

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

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

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

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

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

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

Demo:

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

设置临界点

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

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

设置事件来触发加载

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

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

Demo:

使用特效

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

Demo:

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

针对不启用JavaScript的情况

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

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

可以通过 CSS 隐藏占位符.

1
2
3
.lazy {
    
display
:
none
;
}

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

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

图片在容器里面

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

Demo:, 

当图像不连续时

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

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

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

加载隐藏的图片

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

1
2
3
$(
"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 浏览器上测试过.

 

 

原文链接:http://www.w3cways.com/1765.html

 

转载于:https://www.cnblogs.com/weibo806/p/5949268.html

你可能感兴趣的文章
【转】变量命名(简短且无歧义)
查看>>
转载:固定表格布局下的各浏览器对与表格宽度计算算法不同
查看>>
SQL Server 找出值得优化的语句
查看>>
mysql爱之深探测
查看>>
单点登录技术
查看>>
使用LINQ取得已选中的CheckBox .
查看>>
感谢青春
查看>>
Jquery Uploadify4.2 falsh 实现上传
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>
通过ant调用shell脚本执行adb命令
查看>>
APP接口自动化测试JAVA+TestNG(一)之框架环境搭建
查看>>
php底层--1
查看>>
Servlet生命周期引起的问题
查看>>
关于gulp入门之图片压缩
查看>>
ZOJ 2136 Longest Ordered Subsequence
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>