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 相关文章推荐
juqery 学习之四 筛选过滤
Nov 30 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
jQuery的one()方法用法实例
Jan 19 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
jQuery实现定位滚动条位置
Aug 05 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
浅谈javascript的闭包
Jan 23 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
JS实现滑动导航效果
Jan 14 Javascript
详解JavaScript 作用域
Jul 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中const与define的应用区别
2013/06/18 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
php头像上传预览实例代码
2017/05/02 PHP
js中window.open()的所有参数详细解析
2014/01/09 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
小小聊天室Python代码实现
2016/08/17 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python多线程并发实例及其优化
2019/06/27 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
什么是servlet链?
2014/07/13 面试题
心得体会范文
2014/01/04 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
创业融资计划书
2014/04/25 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
2014年党员整改措施
2014/10/24 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
大学生入党群众意见书
2015/06/02 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
JavaScript canvas实现流星特效
2021/05/20 Javascript
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技