图片懒加载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 相关文章推荐
setInterval 和 setTimeout会产生内存溢出
Feb 15 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
js控制淡入淡出示例代码
Nov 12 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 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函数与传递参数实例分析
2014/11/15 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
小程序自定义日历效果
2018/12/29 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
Anaconda入门使用总结
2018/04/05 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
大家检讨书5000字
2014/02/03 职场文书
《雷雨》教学反思
2014/02/20 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
临床护理求职信
2014/04/26 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
升职感谢信
2015/01/22 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers