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中实现动画效果的基本操作介绍
Apr 16 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
js闭包实例汇总
Nov 09 Javascript
js实现网页标题栏闪烁提示效果实例分析
Nov 20 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
vue页面切换到滚动页面显示顶部的实例
Mar 13 Javascript
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
vue检测对象和数组的变化分析
Jun 30 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
jQuery+ajax实现批量删除功能完整示例
Jun 06 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操作xml
2013/10/27 PHP
php文件读取方法实例分析
2015/06/20 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
js编写选项卡效果
2017/05/23 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
常见python正则用法的简单实例
2016/06/21 Python
Python自定义简单图轴简单实例
2018/01/08 Python
Python 错误和异常代码详解
2018/01/29 Python
python psutil库安装教程
2018/03/19 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python requests.get带header
2020/05/05 Python
什么是python的id函数
2020/06/11 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
活动策划求职信模板
2014/04/21 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
前台文员岗位职责
2015/02/04 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers