原生js实现移动端瀑布流式代码示例


Posted in Javascript onDecember 18, 2015

瀑布流布局已成为当今非常普遍的图片展示方式,无论是PC还是手机等移动设备上。最近使用到了“懒加载”,现在更新一般,因为平时主要使移动端的开发所以库文件使用的是zepto.js 。当然也可以和jQuery 通用。
代码如下:

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 相关文章推荐
7个Javascript地图脚本整理
Oct 20 Javascript
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
Feb 07 Javascript
使用console进行性能测试
Apr 27 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
js仿3366小游戏选字游戏
Apr 14 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
Jan 25 Javascript
JS中offset和匀速动画详解
Feb 06 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 Javascript
vue实现顶部菜单栏
Nov 08 Javascript
jQuery Validate表单验证入门学习
Dec 18 #Javascript
jQuery定义插件的方法
Dec 18 #Javascript
jQuery Validate插件实现表单强大的验证功能
Dec 18 #Javascript
jquery实现二级导航下拉菜单效果
Dec 18 #Javascript
学习jQuey中的return false
Dec 18 #Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 #Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 #Javascript
You might like
PHP常用代码
2006/11/23 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
Angular实现form自动布局
2016/01/28 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
使用Python的PEAK来适配协议的教程
2015/04/14 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python代码xml转txt实例
2020/03/10 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
娱乐节目策划方案
2014/06/10 职场文书
教师辞职书范文
2015/02/26 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
青年联谊会致辞
2015/07/31 职场文书
通知怎么写?
2019/04/17 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
MySQL注入基础练习
2021/05/30 MySQL
详解Python flask的前后端交互
2022/03/31 Python
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技