首页优化-图片分块延迟加载实现

简介:

本篇内容本来是想作为JS单元测试的Demo放出,但是看到不少朋友对分块延迟加载的具体实现感兴趣,我就在这里跟大家探讨一下,请多多提建议。

分析:

1.       适用于页面可以将图片划分区块,如无名良品首页的各个楼层。

2.       多个区块,并且区块的粒度适中,每个最好在半屏到2屏之间。

3.       更适合于每个区块上有导航的情形,因为会导航到中间区块,上面下面的区块都不加载图片。

实现:

1.       更改页面img 元素,将<img src=”图片地址”/> 更改为:<img data-ks-lazyload=” 图片地址” />,其中 data-ks-lazyload 为自定义属性,自己可以指定属性名。

2.       初始化:

1) 遍历区块内所有图片,包含 data-ks-lazyload 属性的图片放入数组,添加默认的占位图片(Loading图片)<img data-ks-lazyload=” 图片地址”  src=”loading 图片”/>

2) 判断当前区块是否在用户视图内,如果在用户视图内则加载所有图片,不在用户视图内,则添加窗口Scroll事件和窗口Resize事件。

3.       加载图片

1) 当用户视图移动到当前区块时,如果注册了事件则加载图片,加载完移除事件。

2) 加载区块图片时,将图片改为<img src=”图片地址”/>,在ie6,ie7下修正图片大小。

4.       Demo 下载

总结:

Demo中的代码比较简单大部分是Kissy datalazyload.js中的,其中重写了判断是否在当前视图内,和加载区块图片的函数,当用户停留在具体某区块超过5秒后可以加载其他区块,这个实现没写在代码中,感兴趣的可以自己实现一下。下面还有一遍博客,是针对分块延迟加载JS做的单元测试,共同学习,共同讨论

posted @ 2011-06-01 13:23  zaohe  阅读(5767)  评论(0编辑  收藏  举报