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

  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中的<img>图片延迟加载,其实背景图片也可以延迟加载。背景图片图片延迟加载有一个更大的好处是,爬虫爬取时无法爬取到图片,节省了服务器资源。
  
  背景图片延迟加载跟html中图片延迟加载很相似

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

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

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

前端优化之图片延迟加载(lazyload.js)的更多相关文章

  1. 【前端优化】图片延迟加载Lazy-loading的原理与简单实现

    1.什么是lazy-loading 图片"懒加载" 为img标签src设置统一的图片链接,而将真实链接地址装在自定义属性中. 所以开始时候图片是不会加载的,我们将满足条件的图片的s ...

  2. 延迟加载图片插件LazyLoad.js的使用方法

    我们常常会见到很多网页的图片并不是一打开页面就全部加载的,而是浏览到当前的图片位置才显示出来.这是怎么实现出来的呢? 其实这就是目前较为流行的“延迟加载”(Lazy Load)技术,灵感来自Matt ...

  3. Web性能优化之图片延迟加载

    来源:微信公众号CodeL 对于一些图片多,页面长的网页来说,如果每次打开页面加载全部的网页内容,页面加载速度势必会受到影响,如果每次打开网页只将网页可视区域的内容加载给用户 ,将大大提高网页浏览速度 ...

  4. JQuery缓冲加载图片插件lazyload.js的使用方法

    lazyload.js是一个基于JQuery的插件,可以用来缓冲加载图片.如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动 ...

  5. jQuery前端插件以及图片延迟加载

    插件名称 用途 插件官网地址 fontawsome CSS图标插件 http://fontawesome.io easyui 基于jQuery的用户界面插件集合 http://www.jeasyui. ...

  6. [转][前端优化]使用Combres合并对js、css文件的请求

    本文转自:http://www.cnblogs.com/parry/archive/2011/01/28/Reduce_Http_Request_Using_Combres_For_Js_Css.ht ...

  7. [转] Web前端优化之 图片篇

    原文链接: http://lunax.info/archives/3101.html Web 前端优化最佳实践第六部分面向 图片(Image),这部分目前有 4 条规则.在最近的 Velocity 2 ...

  8. 【web前端优化之图片模糊到清晰】看我QQ空间如何显示相片

    前言 此篇文章估计不会太长,有移除首页的风险,但是老夫(称老夫是因为我们真正的叶小钗其实都100多岁啦)是不会怕滴.所以,我来了哟! 题外话:今天我们一起还看了一道前端的面试题,而后我本来还想多找几道 ...

  9. 图片延迟加载scrollLoading.js应用

     <ul>                     <li><a href="http://news.qq.com/" target="_b ...

随机推荐

  1. 查询Oracle正在执行和执行过的SQL语句

    ---正在执行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.s ...

  2. Windows下部署Appium教程(Android App自动化测试框架搭建)

    摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...

  3. cf 712E Memory and Casinos

    题意:有一行$n(n \leq 100000)$个方格,从左往右第$i$个方格的值为$p_i(p_i = \frac{a}{b}, 1 \leq a < b \leq 1e9)$,有两种操作,一 ...

  4. JAVA继承时构造函数的问题

    今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了. 下面是我个人的总结: 先创建一个父类,里面有两个构造函数: public class Jisuan ...

  5. javascript作用域链与原型链有联系吗?

    一般来说,作用域链是针对变量的,js里面大的范围上来说,只有两种作用域,全局作用域和函数内部作用域,如果函数1里面又定义了函数2(一般都是匿名函数), 那么就有了这么一个作用域链全局作用域==> ...

  6. CentOS安装cacti

    1.安装软件包 yum install -y httpd php php-mysql \ php-snmp mysql mysql-server \ perl-DBD-MySQL php-pdo ne ...

  7. vue.js存储--localStorage

    //list例子:绑定从localStorage中读取的数据,动态添加list并监听将数据变化存储在localStorage中,绑定点击事件改变样式, 页面 data数据: input_name:'' ...

  8. property animation ( NineOldAndroid )

    区别一:需要的Anroid API level不一样 Property Animation需要Android API level 11的支持,而View Animation则是更早期的版本. 区别二: ...

  9. 遗传算法在JobShop中的应用研究(part 5:解码)

    解码操作是整个遗传算法最重要的一步,在这步里面我们利用配置文件中的信息将染色体解码成一个有向无环图. 在介绍解码操作之前我们先来看一下配置文件,在part1绪论中我们已经介绍了一个车间调度问题的基本信 ...

  10. mysql服务器和配置优化

    一.存储引擎 mysql中有多种存储引擎,一般常见的有三种:   MyIsam InnoDB Memory 用途 快读 完整的事务支持 内存数据 锁 全表锁定 多种隔离级别的行锁 全表锁定 持久性 基 ...