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 相关文章推荐
ASP中Sub和Function的区别说明
Aug 30 Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
Aug 06 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
原生js实现电商侧边导航效果
Jan 19 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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判断网页是否gzip压缩
2013/06/25 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python编程实现归并排序
2017/04/14 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python匿名函数用法实例分析
2019/08/03 Python
Django如何实现上传图片功能
2019/08/16 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python多维数组分位数的求取方式
2020/03/03 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
优秀学生评语大全
2014/04/25 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
服务明星事迹材料
2014/12/29 职场文书
南京导游词
2015/02/03 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android