原生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 相关文章推荐
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
Feb 21 Javascript
js改变Iframe中Src的方法
May 05 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
JavaScript中for循环的几种写法与效率总结
Feb 03 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
深入理解 JS 垃圾回收
Jun 03 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
Javascript Worker子线程代码实例
Feb 20 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 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中用文本文件做数据库的实现方法
2008/03/27 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
简单谈谈Python中的闭包
2016/11/30 Python
Python解惑之整数比较详解
2017/04/24 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python交易记录链的实现过程详解
2019/07/03 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
Python内置函数property()如何使用
2020/09/01 Python
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
年度考核自我鉴定
2014/03/19 职场文书
基层党支部承诺书
2015/04/30 职场文书
可可西里观后感
2015/06/08 职场文书
工作证明书
2015/06/15 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
python numpy中setdiff1d的用法说明
2021/04/22 Python
Java 数组内置函数toArray详解
2021/06/28 Java/Android