图片懒加载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 相关文章推荐
鼠标放在图片上显示大图的JS代码
Mar 26 Javascript
php与js的区别是什么
Aug 05 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
Dec 06 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 Javascript
聊聊JavaScript如何实现继承及特点
Apr 07 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
VUE注册全局组件和局部组件过程解析
Oct 10 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 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 金额数字转换成英文
2010/05/06 PHP
优化PHP程序的方法小结
2012/02/23 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
flask中的wtforms使用方法
2018/07/21 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
五年级音乐教学反思
2014/02/06 职场文书
捐助倡议书范文
2014/04/15 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
消防安全月活动总结
2015/05/08 职场文书
2015年电教工作总结
2015/05/26 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python