源于生活

标题: jquery.lazyload 实现图片延迟加载jquery插件 [打印本页]

作者: kevin-ying    时间: 2015-8-3 15:57
标题: jquery.lazyload 实现图片延迟加载jquery插件
什么是ImageLazyLoad技术
在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互。尤其是对于高清晰的图片,占的几M的空间。ImageLazyLoad技术就是,当前可见界面的图片是加载进来的,而不可见页面(通过滚动条下拉可见)中的图片是不加载的,这样势必会引起速度上质的提升。

怎么实现ImageLazyLoad

一、使用JQuery插件 ,插件名: jquery.lazyload(7kb大小),压缩后(3kb大小)


在线压缩js http://closure-compiler.appspot.com/home
虽然是很牛X的特效,不过用JQuery插件只需要短短几句代码,使用过程如下:

1.导入JS插件
  1. <script src="jquery.js" type="text/javascript"></script>
  2. <script src="jquery.lazyload.js" type="text/javascript"></script>
复制代码


2.在你的页面中加入如下的javascript:

  1. $("img").lazyload();
复制代码


这将会使所有的图片都延迟加载。


当然插件还有几个配置项可供设置。

1.改变threshold

  1. $(“img”).lazyload({ threshold : 200 });
复制代码



把阀值设置成200 意思就是当图片没有看到之前先load 200像素。


2.当然了你也可以通过设置占位符图片和自定事件来触发加载图片事件
复制代码代码如下:

  1. $("img").lazyload({
  2. placeholder : "img/grey.gif",
  3. event : "click"
  4. });
复制代码


3.可以通过定义effect 参数来定义一些图片显示效果
复制代码代码如下:

  1. $("img").lazyload({
  2. placeholder : "img/grey.gif",
  3. effect : "fadeIn"
  4. });
复制代码

LazyLoad(延迟加载)技术不仅仅用在对网页中图片的延迟加载,对数据同样可以,Google Reader和Bing图片搜索就把
LazyLoad技术运用的淋漓尽致;
缺陷:
1.与Ajax技术的冲突;
2.图片的延迟加载,遇到高度特别高的图片,会出现停止加载的问题;
3.写代码不规范的同学要注意了,不管由于什么原因,如果您的页面中,img标签的height属性未定义,那么我建议您最好不要使用ImageLazyLoad

大家可以直接采用淘宝的延迟加载技术:(2kb大小)
http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js
调用方法也是很简单的:
  1. <script src="http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js"
  2. type="text/javascript"></script> <script type="text/javascript">// <![CDATA[KISSY.ImageLazyload();// ]]></script>
复制代码


注:该脚本依赖 yahoo-dom-event, 页面中需要加载 yui 2.x,你也可以直接引用下面的地址:
  1. <script src="http://kissy.googlecode.com/svn/trunk/third-party/yui2/yahoo-dom-event/yahoo-dom-event.js" type="text/javascript"></script>
复制代码



配置参数如下:
代码如下:

  1. <script type="text/javascript">
  2. KISSY.ImageLazyload({
  3. mod: "manual", // 延迟模式。默认为 auto
  4. diff: 200 // 当前屏幕下多远处的图片开始延迟加载。默认两屏外的图片才延迟加载
  5. });
  6. </script>
复制代码




manual 模式时,需要手动将页面中需要延迟加载的图片的 src 属性名更改为 data-lazyload-src. 比如 SRP 页面,宝贝列表的后20个图片延迟加载。 输出时,html 代码为:
  1. <img data-lazy-src="path/to/img" alt="something" />
复制代码

如果您是Jquery,Prototype等这些JS框架的粉丝,他们都有定制的LazyLoad Plugin提供;
可查看http://www.appelsiini.net/projects/lazyload
LazyLoad(延迟加载)技术不仅仅用在对网页中图片的延迟加载,对数据同样可以,Google Reader和Bing图片搜索就把
LazyLoad技术运用的淋漓尽致;


作者: kevin-ying    时间: 2015-8-3 16:07

jquery 有一个lazyload插件。插件包括文档地址 我已经打包在我的云盘中,下载地址:

百度云下载

下面说一下介绍使用方法:

首先我需要的

是2个文件:

[attach]1006[/attach]

脚本文件结构


[attach]1004[/attach]

----------------

图标组合结构:


[attach]1005[/attach]

图片延迟加载的原理是 用  

data-original 这个属性保存的真实的图片地址,在计算滚动轴值之后,放到src中。导致图片显示。而在刚开始的时候  src 的路径是一个显示正在加载的图片。


在 文档DOM加载完成后,用 class 为ld的调用lazyload方法。

通过 effect: "fadeIn 实现图标显示动画效果



-----------------

js脚本和文档以及演示DEMO已经存在百度云盘,可以下载查看文档中的其他参数







欢迎光临 源于生活 (http://bbs.vingoo.info/) Powered by Discuz! X3.1