图片懒加载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 相关文章推荐
在你的网页中嵌入外部网页的方法
Apr 02 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
jquery选择器原理介绍($()使用方法)
Mar 25 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
浅谈JavaScript中promise的使用
Jan 11 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
小程序云开发部署攻略(图文教程)
Oct 30 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 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
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
PHP实现微信对账单处理
2018/10/01 PHP
jquery 选项卡效果 新手代码
2011/07/08 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
Json解析的方法小结
2016/06/22 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Django实现celery定时任务过程解析
2020/04/21 Python
COSETTE官网:奢华,每天
2020/03/22 全球购物
小学生期末评语大全
2014/04/21 职场文书
机关搬迁方案
2014/05/18 职场文书
小学运动会口号
2014/06/07 职场文书
公共场所禁烟标语
2014/06/25 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技