jQuery图片延迟加载插件lazyload.js
lazyload.js 是一款基于jQuery的图片延迟加载插件。lazyload.js用于长页面图片的延迟加载,视口外的图片会在窗口滚动到它的位置时再进行加载,这是与预加载相反的。
lazyload.js的特点
- 它可以提高页面加载速度;
- 在某些情况清晰它也可以帮助减少服务器负载。
lazyload.js 运行效果
lazyload.js 下载
实例下载地址:http://pan.baidu.com/s/1u9nf4
官方地址:http://appelsiini.net/projects/lazyload/
lazyload.js 使用教程
引用jquery和jquery.lazyload.js到你的页面。
1
2
|
< script src = "jquery-1.11.0.min.js" ></ script >
< script src = "jquery.lazyload.js?v=1.9.1" ></ script >
|
为图片加入样式lazy,图片路径引用方法用data-original
1
2
3
4
5
6
|
< img class = "lazy" data-original = "img/bmw_m1_hood.jpg" >
< img class = "lazy" data-original = "img/bmw_m1_side.jpg" >
< img class = "lazy" data-original = "img/viper_1.jpg" >
< img class = "lazy" data-original = "img/viper_corner.jpg" >
< img class = "lazy" data-original = "img/bmw_m3_gt.jpg" >
< img class = "lazy" data-original = "img/corvette_pitstop.jpg" >
|
js出始化lazyload并设置图片显示方式
1
2
3
4
5
|
< script type = "text/javascript" charset = "utf-8" >
$(function() {
$("img.lazy").lazyload({effect: "fadeIn"});
});
</ script >
|
lazyload.js 参数设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$( "img.lazy" ).lazyload({
placeholder : "img/grey.gif" , //用图片提前占位
// placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏
effect: "fadeIn" , //
载入使用何种效果
// effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
threshold: 200, // 提前开始加载
// threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉
event: 'click' , //
事件触发时才加载
// event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…
container: $( "#container" ), //
对某容器中的图片实现效果
// container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片
failurelimit : 10 // 图片排序混乱时
// failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,
//但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题.
}); |
lazyload.js 自定义触发事件
默认的触发事件,是滚动,当你滚动的时候,就会检查然后加载。你可以使用event属性,设置你自己的加载事件,之后你可以自定义触发这个事件的条件,然后去加载图像。
1
|
$( "img.lazy" ).lazyload({ event : "click" });
|
lazyload.js 自定义显示效果
1
|
$( "img.lazy" ).lazyload({ effect : "fadeIn" });
|
默认的图片实现效果,就是没有效果,下载完成之后,直接显示出来。这样的用户体验并不好,你可以设置 effect 属性,来控制显示图片的效果。
fadeIn的效果就是,改变图片的透明度,渐现的方式出现。
lazyload.js 插件原理
修改目标 img 的 src 属性为 orginal 属性,从而中断图片的加载。检测滚动状态,然后把可视网页中的 img 的 src 属性还原加载图片,制造缓冲加载的效果。
但是现在,很多javascript大牛分析得出,这个插件其实并没有真正的缓加载效果。确实是这样,官方也已经给出了说明和解决方法了。
问题原因:在新版的浏览器中,即使你删除了 Javascript 控制的 src 属性,浏览器仍然会去加载这个图像。
解决方法:直接修改 HTML 的结构,在 img 标签中添加新的属性,把 src 属性的值指向占位图片,添加 data-original 属性,让其指向真正的图像地址。