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

 更新时间:2015年12月18日 10:15:26   作者:zhiqiang21  
这篇文章主要为大家分享了原生js实现移动端瀑布流式代码示例,对瀑布流布局感兴趣的小伙伴们可以参考一下

瀑布流布局已成为当今非常普遍的图片展示方式,无论是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生成平滑曲线详解

    相信大家都遇到过,在各种图表框架中经常会有将一段折线平滑的需求,不仅能给用户带来一种柔和的感觉,还能美化界面,让折线看起来没那么生硬,这篇文章主要给大家介绍了关于如何利用Javascript生成平滑曲线的相关资料,需要的朋友可以参考下
    2021-07-07
  • JS 删除字符串最后一个字符的实现代码

    JS 删除字符串最后一个字符的实现代码

    本篇文章主要是对JS删除字符串最后一个字符的实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 小程序实现图片移动缩放效果

    小程序实现图片移动缩放效果

    这篇文章主要为大家详细介绍了小程序实现图片移动缩放效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • JS逆向之浏览器补环境图文详解

    JS逆向之浏览器补环境图文详解

    平时JavaScript逆向需要补环境或者补一些函数,下面这篇文章主要给大家介绍了关于JS逆向之浏览器补环境的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • django admin 使用SimpleUI自定义按钮弹窗框示例

    django admin 使用SimpleUI自定义按钮弹窗框示例

    Django 后台admin有大量的属性和方法,拥有强大的功能和自定义能力,这篇文章主要介绍了django admin 使用SimpleUI自定义按钮弹窗框示例,需要的朋友可以参考下
    2023-04-04
  • javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版

    javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版

    javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版,这里提供了两个版本,第二个在firefox下运行有些问题大家可以修改下,第一个的高度问题,已经修正,其实就是简单的加了css样式。
    2009-12-12
  • JQuery 前台切换网站的样式实现

    JQuery 前台切换网站的样式实现

    本文说的是在WordPress中怎样利用JQuery在网站的前台切换样式的方法。或者这篇文章的方法大家可能不是太需要,因为我觉得这是解决我被主题样式折腾到差不多分裂的原因及结果的最后手段。
    2009-06-06
  • javaScript使用EL表达式的几种方式

    javaScript使用EL表达式的几种方式

    这篇文章主要介绍了javaScript如何使用EL表达式,有哪几种不错的方式,需要的朋友可以参考下
    2014-05-05
  • js实现简单抽奖功能

    js实现简单抽奖功能

    这篇文章主要为大家详细介绍了js实现简单抽奖功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 关于JavaScript中原型继承中的一点思考

    关于JavaScript中原型继承中的一点思考

    JS中原型的概念不想多说,这里只是探讨一下修改父类原型属性与覆盖父类原型中属性的区别,防止以后出问题
    2012-07-07

最新评论