前端插件实现图片懒加载

一、echo.js:

  我们在开发页面的时候肯定会遇到图片比较多的时候,虽然我们可能有图片分布式的服务器,但是在客户端还是会有很大的性能开销。为了用户体验,特别是对首屏加载速度要求很高的,通常我们会考虑图片延时加载,lazyloading这款插件已经能很好地实现这一功能,可是是基于jQuery,对于移动端可能不太实用。一个非常简单实用叫echo的插件,3k左右特别适合移动端使用。步骤如下:

1、在页面中需要引入echo.css和echo.min.js

2、对需要进行延迟加载的图片采用如下写法:

<img src="blank.gif" style="width:300px;height:300px;" data-echo="test.jpg" /> 

3、对插件进行初始化:

echo.init({
  offset:1,        //离可视区域多少像素的图片可以被加载
  throttle:1      //图片延迟多少毫秒加载
});

  说明:blank.gif是一张背景图片,包含在插件里了。图片的宽高必须设定,当然,可以使用外部样式对多张图片统一控制大小。

  data-echo指向的是真正的图片地址。非常简单,这样的话图片只有出现在视野内时才会加载,减少了页面的渲染工作量。

二、jquery.lazyload.js:

  将页面里所有img属性src属性用data-xx代替,当页面滚动直至此图片出现在可视区域时,用js取到该图片的data-xx的值赋给src。

<section class="module-section" id="container">
     <img class="lazy-load" data-original="../static/img/loveLetter/teacher/teacher1.jpg" width="640" height="480" alt="测试懒加载图片"/>
</section>
require.config({
    baseUrl : "/static",
    paths: {
        jquery:‘component/jquery/jquery-3.1.0.min‘
        jqueryLazyload: ‘component/lazyLoad/jquery.lazyload‘,//图片懒加载
    },
    shim: {
        jqueryLazyload: {
            deps: [‘jquery‘],
            exports: ‘$‘
        }
    }
});
require(
    [
        ‘jquery‘,
        ‘jqueryLazyload‘
    ],
    function($){
        $(document).ready(function() {
            $("img.lazy-load").lazyload({
        effect : "fadeIn", //渐现,show(直接显示),fadeIn(淡入),slideDown(下拉)
        threshold : 180, //预加载,在图片距离屏幕180px时提前载入
        event: ‘click‘,  // 事件触发时才加载,click(点击),mouseover(鼠标划过),sporty(运动的),默认为scroll(滑动)
        container: $("#container"), // 指定对某容器中的图片实现效果
        failure_limit:2 //加载2张可见区域外的图片,lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况
      });
    });
  });

  为了代码可读性,属性值我都写好了注释。值得注意的是预制图片属性为data-original,并且最好是给予初始高宽占位,以免影响布局。

时间: 2024-10-11 13:05:22

前端插件实现图片懒加载的相关文章

前端性能优化--图片懒加载(lazyload image)

图片懒加载(当然不仅限于图片,还可以有视频,flash)也是一种优化前端性能的方式.使用懒加载可以想要看图片时才加载图片,而不是一次性加载所有的图片,从而在一定程度从减少服务端的请求 什么是懒加载 懒加载怎么个懒法,就是你不想看就不给你看,我也懒得加载出来,懒得去请求.通俗的说就是你不要就不给你,怎么地.举个栗子,比如在进入某个页面的时候,它会有许多的图片,有些图片可能在下面,当我们点进页面但没有滑动下去或没看完整个页面,那么下面的图片就会"没用",加载了也白加载,而且还降低了网页的加

支持BetterScroll和iScroll滚动插件的图片懒加载的插件

做H5长页面,内容都是一个个图片.优化页面速度,使用了图片懒加载插件. 下面我安利一款,我在网上寻找到这个懒加载插件zhanyouwei/m-lazy,是支撑BetterScroll和iScroll滚动插件的. 项目地址:https://github.com/zhanyouwei/m-lazy 项目介绍:https://segmentfault.com/a/1190000004656348 原文地址:https://www.cnblogs.com/Koming/p/10000337.html

Vue实现一个图片懒加载插件

前言 图片懒加载是一个很常用的功能,特别是一些电商平台,这对性能优化至关重要.今天就用vue来实现一个图片懒加载的插件. 这篇博客采用"三步走"战略--Vue.use().Vue.direction.Vue图片懒加载插件实现,逐步实现一个Vue的图片懒加载插件. Vue.use() 就像开发jQuery插件要用$.fn.extent()一样,开发Vue插件我们要用Vue.use().其实就是官方内部实现的一个方法,供广大开发者灵活开发属于自己的插件.只需要按照约定好的规则开发就行. 用

前端性能优化技术(一):图片懒加载

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>lazyload</title> </head> <body> <div> <a href="#"><img class="lazy" src="imag

实现一个图片懒加载插件

实现一个图片懒加载插件-转 Web 图片的懒加载就是通过读取img元素,然后获得img元素的data-src(也可以约定为其他属性名)属性的值,并赋予img的src,从而实现动态加载图片的机制. 这里需要注意的是: img在初始化的时候不要设置src属性,因为即使设置 src='' 浏览器也会尝试加载图片. 一个简单的图片懒加载共涉及两个方面, 1. HTML 约定 我们首先需要给准备实施懒加载的img元素添加指定的class 这里为m-lazyload ,同时将img src赋值给 data-

jQuery插件图片懒加载lazyload

来自XXX的前言: 什么是ImageLazyLoad技术 在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的 交互.尤其是对于高清晰的图片,占的几M的空间.ImageLazyLoad技术就是,当前可见界面的图片是加载进来的,而不可见页面(通过滚动条下拉可 见)中的图片是不加载的,这样势必会引起速度上质的提升. 实现原理: 当图片滚动到可视区时将图片加载进来. 图片不在可视区判断: (一):图片距离页面顶端的高度 大于 窗口可视区的高度+window滚动条的scrollTop. (二

移动端图片懒加载插件

LazyloadImg介绍 LazyloadImg 轻量级的移动端图片懒加载插件原生js开发,不依赖任何框架或库支持将各种宽高不一致的图片,自动剪切成默认图片的宽高.比如说你的默认图片是一张正方形的图片,则各种宽度高度不一样的图片,自动剪切成正方形.完美解决移动端开发中,用户上传图片宽高不一致而导致的图片变形的问题.简洁的API,让你分分钟入门!!! 快速入门 var lazyloadImg = new LazyloadImg({ el: '#ul [data-src]', //匹配元素 top

前端实现图片懒加载

项目中经常会遇到多图片需要加载的情况,如果一次性全部加载完耗时较多,也较慢.这时就需要用到图片懒加载,常用的有jqueryLazyload这个插件.下载地址:https://github.com/helijun/helijun/blob/master/plugin/lazyLoad/jquery.lazyload.js 使用时,首先得引入jquery,然后再引入jqueryLazyload这个插件,原理就是先不给img加src路径,然后把路径加在属性节点data-original上,在满足条件需

Js 之图片懒加载插件

一.PC端(lazyload) 1.引入js文件 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></scrip