javascript瀑布流式图片懒加载实例


Posted in Javascript onJune 28, 2020

最近项目使用到了“懒加载”,现在更新一般,因为平时主要使移动端的开发所以库文件使用的是zepto.js 。当然也可以和jQuery 通用。

代码如下:

/**
 * Created by zhiqiang on 2015/10/14.
 * hpuhouzhiqiang@gmail.com
 * 图片的懒加载
 **/
function loadImgLazy(node) {
 var lazyNode = $('[node-type=imglazy]', node),
 mobileHeight, lazyOffSetHeight, tempHeight, currentNodeTop, imgObject,
 imgDataSrc, localUrl;

 localUrl = location.href;
 // 获取当前浏览器可视区域的高度
 mobileHeight = $(window).height();

 return function(co) {

 var conf = {
 'loadfirst': true,
 'loadimg': true
 };

 for (var item in conf) {
 if (item in co) {
 conf[item] = co[item];
 }
 }

 var that = {};
 var _this = {};
 /**
 * [replaceImgSrc 动态替换节点中的src]
 * @param {[type]} tempObject [description]
 * @return {[type]} [description]
 */
 _this.replaceImgSrc = function(tempObject) {
 var srcValue;

 $.each(tempObject, function(i, item) {
 imgObject = $(item).find('img[data-lazysrc]');
 imgObject.each(function(i) {
  imgDataSrc = $(this).attr('data-lazysrc');
  srcValue = $(this).attr('src');
  if (srcValue == '#') {
  if (imgDataSrc) {
  $(this).attr('src', imgDataSrc);
  $(this).removeAttr('data-lazysrc');
  }
  }
 });
 });
 };

 /**
 * 首屏判断屏幕上是否出现imglazy节点,有的话就加载图片
 * @param {[type]} i) {  currentNodeTop [description]
 * @return {[type]} [description]
 */
 _this.loadFirstScreen = function() {
 if (conf.loadfirst) {
 lazyNode.each(function(i) {
  currentNodeTop = $(this).offset().top;
  if (currentNodeTop < mobileHeight + 800) {
  _this.replaceImgSrc($(this));
  }
 });
 }
 };

 //当加载过首屏以后按照队列加载图片
 _this.loadImg = function() {
 if (conf.loadimg) {
 $(window).on('scroll', function() {
  var imgLazyList = $('[node-type=imglazy]', node);
  for (var i = 0; i < 5; i++) {
  _this.replaceImgSrc(imgLazyList.eq(i));
  }
 });
 }
 };

 that = {
 replaceImgSrc: _this.replaceImgSrc(),
 mobileHeight: mobileHeight,
 objIsEmpty: function(obj) {
 for (var item in obj) {
  return false;
 }
 return true;
 },
 destory: function() {
 if (_this) {
  $.each(_this, function(i, item) {
  if (item && item.destory) {
  item.destory();
  }
  });
  _this = null;
 }
 $(window).off('scroll');
 }
 };
 return that;
 };
}

希望本文对大家学习javascript图片懒加载有所帮助。

Javascript 相关文章推荐
基于jQuery的日期选择控件
Oct 27 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
JS交换变量的方法
Jan 21 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
浅析javascript中的Event事件
Dec 09 Javascript
javascript实现简单的ajax封装示例
Dec 28 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
jQuery带控制按钮轮播图插件
Jul 31 jQuery
Bootstrap创建可折叠的组件
Feb 23 #Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 #Javascript
Web开发必知Javascript技巧大全
Feb 23 #Javascript
JQUERY表单暂存功能插件分享
Feb 23 #Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 #Javascript
jQuery实现返回顶部功能
Feb 23 #Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 #Javascript
You might like
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
node.js中的require使用详解
2014/12/15 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JavaScript中的this使用详解
2016/07/27 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
研究生毕业鉴定
2014/01/29 职场文书
道士塔读书笔记
2015/06/30 职场文书
导游词之青岛崂山
2019/12/27 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
Win10 Anaconda安装python-pcl
2022/04/29 Servers