艾奇视觉设计

blog正在装修,如有不便敬请谅解.

« 企业网站公用模板的规划与制作一个机电网站 »

运用ImageLazyLoad实现图片的延迟加载技术

[ At 2010-1-27 By sj27   6 comments ]

      如果留意淘宝的话,应该可以注意到:当打开产品页面后,并不是把页面中图片都下载下来,而是随着滚动条的滚动而加载图片.这样可以使页面载入速度更快,节省网站流量,减少服务器的负载.你可以灵活的把这一技术运用在存在大量图片的页面,比如频道页、活动页、搜索结果页等……( 我的博客列表页图片的展示也采用相同的技术)
      也许你还是一头雾水,别着急接着往下看:

什么是ImageLazyLoad技术

    在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互。尤其是对于高清晰的图片,占的几M的空间。ImageLazyLoad技术就是,当前可见界面的图片是加载进来的,而不可见页面(通过滚动条下拉可见)中的图片是不加载的,这样势必会引起速度上质的提升。

怎么实现ImageLazyLoad

在页脚添加以下代码即可:

大家可以直接采用淘宝的延迟加载技术:
http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js

调用方法也是很简单的: 
<script src="http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js" 
type="text/javascript"></script> <script type="text/javascript">// <![CDATA[KISSY.ImageLazyload();// ]]></script>

注:该脚本依赖 yahoo-dom-event, 页面中需要加载 yui 2.x,你也可以直接引用下面的地址:
<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.8.2r1/build/yahoo/yahoo-min.js&2.8.2r1/build/dom/dom-min.js"></script>

至于高级配置,大家可以看这里;

配置参数如下:
<script type="text/javascript">
KISSY.ImageLazyload({
mod: "manual", // 延迟模式。默认为 auto
diff: 200 // 当前屏幕下多远处的图片开始延迟加载。默认两屏外的图片才延迟加载
});
</script>

manual 模式时,需要手动将页面中需要延迟加载的图片的 src 属性名更改为 data-lazyload-src. 比如 SRP 页面,宝贝列表的后20个图片延迟加载。输出时,html 代码为:

<img data-lazy-src="path/to/img" alt="something" />

如果您是Jquery,Prototype等这些JS框架的粉丝,他们都有定制的LazyLoad Plugin提供;

可查看http://www.appelsiini.net/2009/12/tuning-lazy-loader

LazyLoad(延迟加载)技术不仅仅用在对网页中图片的延迟加载,对数据同样可以,Google ReaderBing图片搜索就把
LazyLoad技术运用的淋漓尽致;

分享家:Addthis中国

  • 回复该留言
  • Gravatar Icon
  • 6.北极雪人
  • 发表于2011-11-3 14:25:05
  • 调用方法也是很简单的:
    <script src="http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js"
    type="text/javascript"></script> <script type="text/javascript">// <![CDATA[KISSY.ImageLazyload();// ]]></script>

    我调用 以上代码 网页还是一样的 没有反映
  • 回复该留言
  • Gravatar Icon
  • 4.Janus
  • 发表于2010-12-16 17:58:40
  • 恩~学习了!之前就发现淘宝有猫腻了,以为浏览器“特效”,原来如此~呵呵~
  • 回复该留言
  • Gravatar Icon
  • 3.iceteakey
  • 发表于2010-9-17 16:25:44
  • 请问博主,为什么jquery_lazyload.js的时候,在火狐下预览html本地文件,只能显示一屏的东西,而IE就可以一屏一屏的滚下去??
    sj27 于 2010-9-17 16:56:24 回复
    可以啊,我blog用的就是jquery_lazyload.js,你可以看看我列表页中图片显示的效果,没遇到你所说的问题,具体你也可以右击查看我的源代码。

  • 回复该留言
  • Gravatar Icon
  • 1.Free宇
  • 发表于2010-3-11 13:19:42
  • 谢谢,以后会经常光顾本站
    艾奇 于 2010-3-11 14:00:27 回复
    欢迎常来坐客

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Category

新浪微博

Recent Comments

Recent Article

随机文章

Powered By Z-Blog 1.8 Walle Build 91204

Copyright www.sj27.com. Some Rights Reserved.