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 相关文章推荐
js判断生效时间不得大于失效时间的思路及代码
Apr 23 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
javascript正则表达式定义(语法)总结
Jan 08 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
Vue DevTools调试工具的使用
Dec 05 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
VUE+Element环境搭建与安装的方法步骤
Jan 24 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 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
用PHP解决的一个栈的面试题
2014/07/02 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
JS 表单验证大全
2011/11/23 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
2016/12/23 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python常用编译器原理及特点解析
2020/03/23 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
提拔干部考察材料
2014/05/26 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
会计人员岗位职责
2015/02/03 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python