图片懒加载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 相关文章推荐
iframe父页面获取子页面参数的方法
Feb 21 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
Sep 10 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 Vue.js
基于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
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
JQuery 常用操作代码
2010/03/14 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
对python模块中多个类的用法详解
2019/01/10 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
演讲主持词
2014/03/18 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
典型事迹材料范文
2014/12/29 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
大客户经理岗位职责
2015/04/09 职场文书
初中语文教学随笔
2015/08/15 职场文书
合同范本之电脑出租
2019/08/13 职场文书