100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 前端优化之图片延迟加载(lazyload.js)

前端优化之图片延迟加载(lazyload.js)

时间:2024-04-04 02:57:23

相关推荐

前端优化之图片延迟加载(lazyload.js)

@前端优化

前端优化之图片延迟加载(lazyload.js)

要想缩短首屏加载时间,思路一般是减少http请求次数和降低每次的请求量。本文中使用现成的lazyload.js插件,文末会放出下载地址。

简单的方法是在img标签上添加data-original后面跟的是加载完成要显示的图片,而src上是图片没有加载成功的时候显示的图片

lazyload.js可以实现图片分批次加载,不是一次性加载完毕再分批次展现。使用该插件有个注意的地方,图片要加上宽高。因为默认图是1像素的,所以如果没有给图片限制宽高,当滚动条滚动时会全部加载出来。

比如下面这段代码,其中的图片会一次性加载完成。

<img data-original="images/bg00001.jpg" src="/js/grey.gif" border="0" /> <img data-original="images/bg00002.jpg" src="/js/grey.gif" border="0" /> <img data-original="images/bg00003.jpg" src="/js/grey.gif" border="0" /> <img data-original="images/bg00004.jpg" src="/js/grey.gif" border="0" />

如果加上宽高限制,则每次只会展示可见区域的图片。具体显示多少张,是根据窗口高度和图片高度而定。

<img data-original="images/bg00001.jpg" height="600" src="/js/grey.gif" border="0" /> <img data-original="images/bg00002.jpg" height="600" src="/js/grey.gif" border="0" /> <img data-original="images/bg00003.jpg" height="600" src="/js/grey.gif" border="0" /> <img data-original="images/bg00004.jpg" height="600" src="/js/grey.gif" border="0" />

从以上代码可以看出,需要延迟加载的图片需要使用data-original属性,属性值是真实的图片地址,默认的src值使用1像素的图片(grey.gif)

使用时需要先加载jqury.js,再加载lazyload.js,并且需要写一段js代码,具体代码如下

<script src="js/jquery-1.7.js"></script><script src="js/jquery.lazyload.js" ></script><script>$(function() {$("img").lazyload({effect : "fadeIn"});});</script>

lazyload参数使用说明

1、用图片提前占位

placeholder : “img/grey.gif”,

参数:placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏

2、载入使用何种效果

effect : “fadeIn”,

参数:effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn

3、提前开始加载

threshold : 200,

参数:threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉.

4、事件触发时才加载

event : “click”,

参数:event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…

5、对某容器中的图片实现效果

container: $("#container"),

参数:container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片

6、图片排序混乱时

failurelimit : 10,

参数:failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题

这些都是在html中的图片延迟加载,其实背景图片也可以延迟加载。背景图片图片延迟加载有一个更大的好处是,爬虫爬取时无法爬取到图片,节省了服务器资源。

背景图片延迟加载跟html中图片延迟加载很相似

<div class="lazy" data-original="img/example.jpg" width="640" height="480"></div>

这样,只有当这个div出现在可视视窗内时,背景图才会加载显示。

演示页面下载(含lazyload.js插件)Here Download.

经测试,lazyload插件在IE7,firefox,chrome中均有效,未出现网上所说只对firefox有效的情况.只是在IE中不易看到fadeIn等特效,大概是IE的Javascript执行效率太低所致

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。