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 14 Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
vue axios封装及API统一管理的方法
Apr 18 Javascript
js中关于Blob对象的介绍与使用
Nov 29 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
Vue3为什么这么快
Sep 23 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 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
python中如何进行连乘计算
2020/05/28 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
办公室前台的岗位职责
2013/12/20 职场文书
绿色环保演讲稿
2014/05/10 职场文书
奠基仪式策划方案
2014/05/15 职场文书
敬老月活动总结
2014/08/28 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
心灵点滴观后感
2015/06/02 职场文书
电工生产实习心得体会
2016/01/22 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Java实现房屋出租系统详解
2021/10/05 Java/Android
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP