简介

当页面图片太多时,加载速度就会很慢。尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量。图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有图片在可视区域才去请求加载。

实现原理

<img class="lazy" src="loading.png" data-src="img/example.jpg">

页面打开时首先会加载src里的图片,即很小的加载图;通过监听scroll事件,当图片在可视区域时,使用data-src替换src,加载真正的图片。

使用

实际使用时一般使用已经存在的插件,如lazyload插件。

lazyload插件网上能搜出很多,常见的是:

1、jquery.lazyload.js: 依赖jQuery

/*!
* Lazy Load - jQuery plugin for lazy loading images
*
* Copyright (c) 2007-2015 Mika Tuupola
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* http://www.appelsiini.net/projects/lazyload
*
* Version: 1.9.7
*
*/

http://www.appelsiini.net/projects/lazyload

2、lazyload.js: 依赖jQuery或者Zepto

/*!
* An jQuery | zepto plugin for lazy loading images.
* author -> jieyou
* see https://github.com/jieyou/lazyload
* use some tuupola's code https://github.com/tuupola/jquery_lazyload (BSD)
* use component's throttle https://github.com/component/throttle (MIT)
*/

下载:https://github.com/52fhy/lazyload

以上二者用法是一样的,第二个基于第一个修改,以支持zepto。现在以第二个示例:

lazyload.js

1、引入

<script src="jQuery.js"></script>
<script src="lazyload.min.js"></script>

2、使用

<!--lazyload.js默认懒加载原图片属性是data-original-->
<img class="lazy" src="loading.png" data-original="img/example.jpg">
$(".lazy").lazyload();

3、配置

缺省:

defaultOptions = {
threshold : 0, //图像提前多少加载,单位px
failure_limit : 0,
event : 'scroll', //触发事件
effect : 'show', //效果
effect_params : null, //effect的参数数组
container : w, //使用容器,默认是window
data_attribute : 'original', //可以改成src,即对应data-src属性
data_srcset_attribute : 'original-srcset',
skip_invisible : true,
appear : emptyFn,
load : emptyFn,
vertical_only : false, //竖直方向滚动的页面中使用
check_appear_throttle_time : 300,
url_rewriter_fn : emptyFn,
no_fake_img_loader : false,
placeholder_data_img : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC',
// for IE6\7 that does not support data image
placeholder_real_img : 'http://ditu.baidu.cn/yyfm/lazyload/0.0.1/img/placeholder.png'
// todo : 将某些属性用global来配置,而不是每次在$(selector).lazyload({})内配置
}

示例:

$(function() {
$(".lazy").lazyload({
effect : "fadeIn",//效果
data_attribute : 'src',//可以改成src,即对应data-src属性
event: 'scroll',//默认值
container: $(".content"), //一般无需指定,即window。sui框架里必须指定
});
});

参考:

1、jQuery延迟加载(懒加载)插件

http://www.w3cways.com/1765.html

2、Zepto picLazyLoad Plugin,图片懒加载的Zepto插件、

http://ons.me/484.html

3、手机网站实现图片惰性加载 | UC优视用户研究与体验设计中心-R.E.D

http://red.uc.cn/?p=1052

4、jQuery.lazyload详解

http://www.cnblogs.com/wenbo/archive/2011/07/15/2107579.html

5、jieyou/lazyload: 一个jQuery或zepto的图片延迟加载插件

https://github.com/jieyou/lazyload

6、javascript图片懒加载与预加载的分析 - HackerVirus - 博客园

http://www.cnblogs.com/Leo_wl/p/3526254.html

JS图片懒加载的更多相关文章

  1. js 图片懒加载

    图片懒加载(图片出现在可视区域再加载) 兼容性:兼容目前流行的全部浏览器,包括:兼容到IE6) 使用方法: 引入相应的js文件<script src="js/lazy.js" ...

  2. 【前端优化】js图片懒加载及优化

    一.前言 为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB.当页面图片过多的时候,页面加载速 ...

  3. js图片懒加载(滚动加载)是否生效

    一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...

  4. js图片懒加载(滚动加载)判断是否生效

    一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...

  5. web性能优化之js图片懒加载

    html <div class="container"> <ul> <li> <div id="first" clas ...

  6. js——图片懒加载

    <img class="js-lazy-image centered" src="./img/dog-running.svg" width="4 ...

  7. 原生js图片懒加载特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. js原生图片懒加载 或 js原生图片预加载,html标签自定义属性

    使用原声js来实现图片预加载,或图片懒加载,小伙伴们可以根据项目需要来结合vue或者是react来进行修改. 一.什么是图片懒加载或什么是图片预加载 当访问一个页面的时候,先把img元素或是其他元素的 ...

  9. jquery 图片懒加载

      jquery 图片懒加载 CreationTime--2018年7月1日14点45分 Author:Marydon 1.源码展示 (function(a){a.fn.lazyload=functi ...

随机推荐

  1. 【洛谷P2889】Milking Time

    很容易想到以结束时间加上R从小到大排序 之后怎样呢? 我们按层考虑,f[i]表示前i个时间段嫩得到的最大价值 每次枚举其之前的状态,如果其ed<当前i的st,那么取max即可 #include& ...

  2. CodeForces 743C Vladik and fractions (数论)

    题意:给定n,求三个不同的数满足,2/n = 1/x + 1/y + 1/z. 析:首先1是没有解的,然后其他解都可以这样来表示 1/n, 1/(n+1), 1/(n*(n+1)),这三个解. 代码如 ...

  3. Linux命令之awk数组使用范例

    目录 取ifconfig bond0的IP地址    1 命令如下:    2 统计apache日志单IP访问请求数排名    2 第一种方法    2 第二种方法    2 统计域名访问量    3 ...

  4. 使用OFBIZ 时,使用的键入提示。

    对商品的键入提示 ,效果如图(当输入关键字时,会提示出相应的数据) 首先要引入相应的插件 页面字段 js方法

  5. MATLAB不运行也不报错

    今天本来挺激动找到能运行的好几个程序 MATLAB忙到busy也是停不下来 本来不以为然 结果呢 吃了个水果 一杯水都喝下去了 还没结果(⊙o⊙) 这时候解决办法只有一个 Ctrl+c

  6. 网络流EK

    #include <iostream> #include <queue> #include <string.h> #define MAX 302 using nam ...

  7. web攻防

    1.内网渗透端口转发: 在被控制机上执行: lcx.exe -slave 216.32.*.*(一个外网ip) 51  192.168.2.32(内网ip)  端口号 在本机上执行: lcx.exe ...

  8. java中类型转换

    1.基本数据类型转换    char, byte,short,int,long,float,double,boolean (1)小类型数据可以直接赋给大类型数据          例:char a=' ...

  9. ansible 自动化(2)

    模块介绍: copy模块 使用copy模块,可以将本地文件一键复制到远程服务器:-a后跟上参数,参数中指定本地文件和远端路径: [root@ZABBIX ~]# ansible glq -m copy ...

  10. 多个div居中显示

    页面中有多个div时我们希望并排居中显示,可以通过在并排显示的div上一层再加一个div,设定宽度,然后让其居中显示达到需要的效果. 关键是要对外层div设定宽度. <!DOCTYPE html ...