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 表单验证常见正则
Sep 28 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
Mar 14 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 Javascript
jQuery实现定位滚动条位置
Aug 05 Javascript
详解vue mixins和extends的巧妙用法
Dec 20 Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 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的session过期设置
2013/06/29 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
教师远程培训感言
2014/03/06 职场文书
团结演讲稿范文
2014/05/23 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
基石观后感
2015/06/12 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
golang使用map实现去除重复数组
2022/04/14 Golang