zoukankan      html  css  js  c++  java
  • JS图片懒加载

    简介

    当页面图片太多时,加载速度就会很慢。尤其是用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 IE67 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

  • 相关阅读:
    Linux 忘记密码解决方法
    Linux 系统目录结构
    【Linux】正确的关机方法
    CentOS7设置系统/yum以及firefox web代理上网
    怎样安装CentOS 6.6之三:磁盘分区的划分和修改
    在虚拟机(VMware)中安装Linux CentOS 6.4系统(图解) 转
    LiveCD、LiveDVD和BinDVD区别在哪里
    关于对FLASH开发,starling、starling feathers、starling MVC框架的理解
    【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取
    javascript实现代码高亮-wangHighLighter.js
  • 原文地址:https://www.cnblogs.com/52fhy/p/5344182.html
Copyright © 2011-2022 走看看