LazyLoad特效,其实已经流行好一阵子了,它是一个jQuery的插件,可以让还没出现在画面上的网页元素先别载入,直到使用者滑动滚动条,移到该元素时,它才载入。这对于网站上塞满图片的人可是一大福音,因为使用LazyLoad技巧,可以提升网站的载入速度。
Wow,这是怎麽办到的?
首先网页被开启时,DOM会先载入,DOM载完,jQuery的document ready才会被触发,这是标准的网页载入流程。
其中DOM就是指页面上的网页元素,img当然也是一个网页元素,但浏览器载完DOM还来不及载入图片时,jquery的document ready就会被触发罗。
一旦document ready开始执行,我们就要快点先把所有的img元素select起来,再把每个img内的src属性值先保存到一个自订的属性值(lazyload插件是取名为original),然后把src内的值砍了,或者先用一张无聊的淡灰色图片取代! (lazyload插件可以透过设定placeholder这个参数,来指定这张无聊的图片的路径)
当img的src被换掉了,就表示每个img元素原来的图片不会被载入了,所以我们可以成功的阻断后面大量图片的载入,直到显示img的条件被触发 (lazyload插件的触发时机是滚动到该图片),我们才载入图片。
如果你有使用firebug,可以观察一下 lazyload 的demo 页面,一开始进入后先别往下滚动,开启firebug就能看到下面还未载入的img元素,都多了original的属性存放自己原本的图片路径,而src属性就被无聊的灰色图片取代了。