简介

当页面图片太多时,加载速度就会很慢。尤其是用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. SSMS错误:A connection was successfully established with the server, but then an error occurred during the login process

    参考: 系统太慢,实在搞不清是哪里的问题,祭出重装大法 需要安装的工具还真多,先装主要的吧.VS2013, SQL SERVER 2012,搞定.. 连个数据库试试,出错了: A connection ...

  2. <转>浅析长度为0的数组

    前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该 ...

  3. java8 ArrayList源码阅读

    转载自 java8 ArrayList源码阅读 本文基于jdk1.8 JavaCollection库中有三类:List,Queue,Set 其中List,有三个子实现类:ArrayList,Vecto ...

  4. spring自动装配

    spring提供了自动装配(autowiring)和自动检测(autodiscovery)用来减少XML的配置数量. 自动装配bean属性 byName——把与Bean的属性具有相同名字(或ID)的其 ...

  5. Linux下Bash入门学习笔记

    学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...

  6. office中通过宏添加快捷键

    把“Microsoft 公式 3.0”作为一个按钮放在 2013中的快速访问工具栏的方法 在使用office办公软件的过程中,因为有的人还在使用office2003版本,所以在使用高版本的office ...

  7. 网页的Width ,Height

    Jquery中可直接用接口$().height(); 获取浏览器窗口高$(window).height() 获取内部文档高$("body").height() 原生JS 网页可见区 ...

  8. 各廠商ERP系統架構圖連結 (ERP流程圖)(轉)

    各廠商ERP系統架構圖連結 (ERP流程圖)   資料來源 Google圖片搜尋ERP整理而來 資通電腦 ArgoERP 資通電腦 Oracle ERP 鼎新電腦 Workflow ERP鼎新電腦 S ...

  9. Linux内核--网络栈实现分析(二)--数据包的传递过程(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7492423 更多请看专栏,地址 ...

  10. Android 环境搭建

    一.Android 环境搭建 开发工具: Android Studio(开发工具,前提是先装 java JDK) 下载地址:http://www.androiddevtools.cn/   Oracl ...