前端masonry+imagesloaded+infinitescroll三大jQuery插件实现瀑

前端masonry+imagesloaded+infinitescroll三大jQuery插件实现瀑

添加时间:2021-03-01 15:42:15
瀑布流已经是几乎过时的技术了,不过对于很多想要快速实现它的朋友而言,却绝非易事,因为即使我们已经有很多现成的代码,却发现在自己的开发环境中 无法快速得到自己想要的结果。
举报 举报
收藏

瀑布流已是几乎过时的脚艺了,不过对于很多想要快捷实现它的朋友而言,却绝非易事,因为即便我们已有很多现成的代码,却发明正在本人的开发环境中 无法快捷获得本人想要的成绩。就像我们目下当今要介绍的三大利器(masonry+imagesloaded+infinitescroll)即便它们是云云 有效,却正在立刻要使用的时候让我们拿着如烫脚山芋班很难真正达到我们想要的后果。

下面,我们从其本理来解说它们的使用,以资助您更好的发挥它的功效。但为了快捷实现,我们不解说它们的所有内容。

1. 合理的HTML布局是题目的根基

<div id="container">
  <div class="item">...</div>
  <div class="item w2">...</div>
  <div class="item">...</div>
  ...
</div>
<div id="page-navi">...</div>

注意:上面的#container跟#page-navi被分隔,#container的使命就包露瀑布流列表,翻页的工作交给#page-navi来完成。很多案例中,#container内的布局不规律,有一些杂项,甚至把#page-navi也放正在内里,这是导致后面处理中堕落的泉源。

2. 存正在图片时masonry+imagesloaded搭配使用

正在一些案例内里小白按照官网上给出的代码停止布局,布局发明图片堆叠正在了一同,于是小白慌张了,以为是否是插件冲突啊,不可能官圆代码也存正在题目吧!是的,官圆代码存正在题目,因为小白没有读完官圆的介绍,单纯看一小段代码就会有这个题目。

正在图片出目下当今.item中时,我们必须比及图片加载完成再来执止masonry,否则masonry会按照图片还没加载的高度来给.item赋予高度,这成绩不可思议,就是庞杂感。

而使用imagesloaded则可以防止这类情况,imagesloaded会检查#container中的图片是否加载完成,只有当图片都加载 完了,才会执止回调中的代码。所以,如果小白要想正在存正在图片的时候实现瀑布流,就必须比及图片加载完了再来使用masonry。当然,有些人不必 imagesloaded,他们牛皮哄哄的使用window.load,可是这样的话会等很暂很暂,假如网速慢,图片加载了半天没有加载完,瀑布流就永久 不会出来。所以,我正在使用代码的时候都是这样使用的:

$('#container').imagesLoaded( function() {
	new Masonry( document.getElementById('container'),{itemSelector:'.item'} );
});

这类用法非常偶怪,官圆说您可以用jQuery的圆法啦,可以用

$('#container').masonry({itemSelector:'.item'});

就可以够啦可是您要这样思索,jQuery的$()是即时获取,一个node加载好就立刻获取的,这可不是什么好事,就像ready跟load一样有的时候ready好了,可是还没有load,这就是图片的情况!图片ready就是加载一个<img>标签,秒秒钟的事,可是要load却要花大把的时候跟流量才止。

而如果您的列表中所有都是文字,那么就不必考虑这些了,因为文字真的就是ready可以完成的事。

3.让infinitescroll执止完,获得加载完的节点

小白正在使用infinitescroll的时候着急的很,希望立刻就可以无限拖了,可是有一个非常宽厉的题目就是,您必须比及要加载的所有的内容都加 载还了,甚至加载过来的图片也已搞定了,才开端止为。就像上面那段代码一样,如果您加载过来了一堆图片,可是图片还没有load,仅仅是ready好 了,您就开端执止masonry,那么重新加载masonry就会因为从后面一页抓取的图片还没有load,而无法确定.item的高度,最后有可能让这 些新加载的.item跑到#container的顶部。我想这个情况绝大部门的小白都遇到过。

如果您深刻理解了这里,您就会以为上面那段短短的,看上去偶怪的代码,是何等精妙。

把它放正在infinitescroll的执止完回调函数中。

$('#container').infinitescroll({
	navSelector : '#page-navi',
	nextSelector : '#page-navi a.next',
	itemSelector : '#container .item'
	// .. 省去了其他参数
},function(arrayOfNewElems){
	$(arrayOfNewElems).appendTo('#container');
	$('#container').imagesLoaded( function() {
		new Masonry( document.getElementById('container'),{itemSelector:'.item'} );
	});
	// .. 省去了其他动作
});

这样的一个逻辑就非常清晰了。

当然了,正在infinitescroll中另有一个this比较难把握。我们虽然获得了arrayOfNewElems,可是没有获取整个DOM。官圆提示这个时候this就是获取的整个DOM,但又立刻提示1.5版本之后this仅仅是获取的DOM中的#container,让人有些纳闷。

官圆地址:infinitescroll masonry imagesloaded

转载请注明: 帝国模板 » masonry+imagesloaded+infinitescroll三大jQuery插件实现瀑布流无限图片勤加载后果

相关内容推荐
资源求助发帖
查看更多发帖

*

回帖描述:

*

链接类型:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
热点内容推荐
标题:前端masonry+imagesloaded+infinitescroll三大jQuery插件实现瀑

*

描述:
平均回复时间:3-10分钟
规则介绍:悬赏寻求论坛网友分享资源,站点对分享内容的准确性,合法性,版权等没有足够的监管能力。如果您发现资源不正确,无法使用,不符合法律法律等情况,您可以直接举报资源。站长将尽快核实您的举报,并根据情况,采取封号,退换米粒等处理。

*

回帖描述:

*

链接类型:

*

阅读权限:

*

下载链接:

密码:
发帖规则:回帖内容为会员之间的私信,普通网友无法查看。
免责声明:回帖中提供的链接内容仅供会员之间学习参考使用,获取内容后请在法律法规范围内使用。回帖提供的内容应符合法律法规要求,不得违反法律法律的要求。
站点权责:回帖内容如违反法律法规,站点有权封停账号使用权利。对用户举报的内容,站点有责任及时删除违规内容。
  • 背景波浪
  • 背景波浪
  • 波浪
  • 波浪
客服
在线咨询
周一 至 周日 9:00 ~ 22:00
QQ:1326974360
微信:juyoubuluo6688
客服热线
18205485173
工作日 9:00 ~ 18:00
微信扫码咨询
客户服务
欢迎咨询服务
咨询量较多时,请耐心等待
社群

关注公众号

获取更多资讯

扫码进群(QQ)

与更多大牛交流沟通

0.110011s