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 相关文章推荐
javascript 写类方式之九
Jul 05 Javascript
防止动态加载JavaScript引起的内存泄漏问题
Oct 08 Javascript
JavaScript调用Activex控件的事件的实现方法
Apr 11 Javascript
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
jQuery实现dialog设置focus焦点的方法
Jun 10 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
如何选择适合你的JavaScript框架
Nov 20 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
如何通过vscode运行调试javascript代码
Jul 24 Javascript
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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
PHP 中的类
2006/10/09 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php短信接口代码
2016/05/13 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python 整数越界问题详解
2019/06/27 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
协议书格式
2014/04/23 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang