图片懒加载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 相关文章推荐
封装的jquery翻页滚动(示例代码)
Nov 18 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
Jul 09 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
如何制作幻灯片(代码分享)
Jan 06 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
js 实现在2d平面上画8的方法
Oct 10 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
Jul 09 Javascript
Vue使用NProgress进度条的方法
Sep 21 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 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
新版PHP极大的增强功能和性能
2006/10/09 PHP
用php+mysql一个名片库程序
2006/10/09 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
再谈javascript原型继承
2014/11/10 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
[01:09:24]Ti4开幕式
2014/07/19 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python数组条件过滤filter函数使用示例
2014/07/22 Python
Python 的 Socket 编程
2015/03/24 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python输出决策树图形的例子
2019/08/09 Python
如何用python处理excel表格
2020/06/09 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
英智兴达软件测试笔试题
2016/10/12 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
财务部副经理岗位职责
2014/03/14 职场文书
销售主管竞聘书
2014/03/31 职场文书
党支部先进事迹材料
2014/12/24 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
戒赌保证书
2015/05/11 职场文书
欢送会主持词
2015/07/01 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android