原生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 相关文章推荐
javascript 面向对象继承
Nov 26 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
js中apply和call的理解与使用方法
Nov 27 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 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
虫族 ZERG 概述
2020/03/14 星际争霸
随机广告显示(PHP函数)
2006/10/09 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
python解析基于xml格式的日志文件
2017/02/25 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Pandas之缺失数据的实现
2021/01/06 Python
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
生日答谢词
2015/01/05 职场文书
运动会开幕词
2015/01/28 职场文书
门卫岗位职责
2015/02/09 职场文书
导游词范文
2015/02/13 职场文书
十八大观后感
2015/06/12 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
详解Python requests模块
2021/06/21 Python
Django REST framework 限流功能的使用
2021/06/24 Python