图片懒加载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 相关文章推荐
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 Javascript
js操作table示例(个人心得)
Nov 29 Javascript
javascript实现检验的各种规则
Jul 31 Javascript
基于Javascript实现文件实时加载进度的方法
Oct 12 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
详解在Vue中有条件地使用CSS类
Sep 30 Javascript
vue + vuex todolist的实现示例代码
Mar 09 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 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采集时被封ip的解决方法
2010/08/29 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
php生成curl命令行的方法
2015/12/14 PHP
Symfony核心类概述
2016/03/17 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
js同时按下两个方向键
2007/12/01 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
详解Python Socket网络编程
2016/01/05 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
触摸春天教学反思
2014/02/03 职场文书
股权转让意向书
2014/04/01 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
班级文化建设标语
2014/06/23 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
用人单位聘用意向书
2015/05/11 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL