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

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

rush:js;"> 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,item) {
if (item && item.destory) {
item.destory();
}
});
_this = null;
}
$(window).off('scroll');
}
};
return that;
};
}

以上所述就是本文给大家分享的全部内容了,希望能够对大家熟练使用javascript有所帮助。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...