图片懒加载imgLazyLoading.js使用详解


Posted in Javascript onSeptember 15, 2020

本文主要介绍web前端使用图片懒加载imgLazyLoading ,供大家参考,具体内容如下

1、html代码

//懒加载对象目标代码
<img originalSrc="__PUBLIC__/images/home/icon_pingtuan.png">
//引用本地js
<script src="__PUBLIC__/js/imgLazyLoading.min.js"></script>
<script src="__PUBLIC__/js/imgLazyLoading.js"></script>

2、js代码

imgLazyLoading.min.js

jQuery.fn.extend({
 delayLoading: function (a) {
  function g(d) {
   var b, c;
   if (a.container === undefined || a.container === window) {
    b = $(window).scrollTop();
    c = $(window).height() + $(window).scrollTop()
   } else {
    b = $(a.container).offset().top;
    c = $(a.container).offset().top + $(a.container).height()
   }
   return d.offset().top + d.height() + a.beforehand >= b && c >= d.offset().top - a.beforehand
  }

  function h(d) {
   var b, c;
   if (a.container === undefined || a.container === window) {
    b = $(window).scrollLeft();
    c = $(window).width() + $(window).scrollLeft()
   } else {
    b = $(a.container).offset().left;
    c = $(a.container).offset().left + $(a.container).width()
   }
   return d.offset().left + d.width() + a.beforehand >= b && c >= d.offset().left - a.beforehand
  }

  function f() {
   e.filter("img[" + a.imgSrcAttr + "]").each(function (d, b) {
    if ($(b).attr(a.imgSrcAttr) !== undefined && $(b).attr(a.imgSrcAttr) !== null && $(b).attr(a.imgSrcAttr) !== "" && g($(b)) && h($(b))) {
     var c = new Image;
     c.onload = function () {
      $(b).attr("src", c.src);
      a.duration !== 0 && $(b).hide().fadeIn(a.duration);
      $(b).removeAttr(a.imgSrcAttr);
      a.success($(b))
     };
     c.onerror = function () {
      $(b).attr("src",
       a.errorImg);
      $(b).removeAttr(a.imgSrcAttr);
      a.error($(b))
     };
     c.src = $(b).attr(a.imgSrcAttr)
    }
   })
  }

  a = jQuery.extend({
   defaultImg: "",
   errorImg: "",
   imgSrcAttr: "originalSrc",
   beforehand: 0,
   event: "scroll",
   duration: "normal",
   container: window,
   success: function () {
   },
   error: function () {
   }
  }, a || {});
  if (a.errorImg === undefined || a.errorImg === null || a.errorImg === "")a.errorImg = a.defaultImg;
  var e = $(this);
  if (e.attr("src") === undefined || e.attr("src") === null || e.attr("src") === "")e.attr("src", a.defaultImg);
  f();
  $(a.container).bind(a.event, function () {
   f()
  })
 }
});

imgLazyLoading.js

$(function () {
 $("img").delayLoading({
  //defaultImg: "__PUBLIC__/images/img/loading.gif",   // 预加载前显示的图片
  errorImg: "",      // 读取图片错误时替换图片(默认:与defaultImg一样)
  imgSrcAttr: "originalSrc",   // 记录图片路径的属性(默认:originalSrc,页面img的src属性也要替换为originalSrc)
  beforehand: 0,      // 预先提前多少像素加载图片(默认:0)
  event: "scroll",      // 触发加载图片事件(默认:scroll)
  duration: "normal",     // 三种预定淡出(入)速度之一的字符串("slow", "normal", or "fast")或表示动画时长的毫秒数值(如:1000),默认:"normal"
  container: window,     // 对象加载的位置容器(默认:window)
  success: function (imgObj) { },  // 加载图片成功后的回调函数(默认:不执行任何操作)
  error: function (imgObj) { }   // 加载图片失败后的回调函数(默认:不执行任何操作)
 });
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript窗口功能指南之在窗口中书写内容
Jul 21 Javascript
JS提交并解析后台返回的XML的代码
Nov 03 Javascript
jquery下onpropertychange事件的绑定方法
Aug 01 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
Aug 04 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
jquery实现网页定位导航
Aug 23 Javascript
EditPlus中的正则表达式 实战(2)
Dec 15 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
基于jquery.page.js实现分页效果
Jan 01 #jQuery
jquery实现企业定位式导航效果
Jan 01 #jQuery
jquery实现楼层滚动效果
Jan 01 #jQuery
jquery实现左右轮播切换效果
Jan 01 #jQuery
jQuery中ajax获取数据赋值给页面的实例
Dec 31 #jQuery
three.js实现3D模型展示的示例代码
Dec 31 #Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 #Javascript
You might like
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery map方法使用示例
2014/04/23 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python socket模块方法实现详解
2019/11/05 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
易程科技软件测试笔试
2013/03/24 面试题
大学生创业计划书的用途
2014/01/08 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
直接有效的自我评价
2014/01/11 职场文书
韩国商务邀请函
2014/01/14 职场文书
双方协议书
2014/04/22 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
挂职个人工作总结
2015/03/05 职场文书
地道战观后感2000字
2015/06/04 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
Python读取和写入Excel数据
2022/04/20 Python