一、Masonry
是基于Jquery插件,用于对CSS布局的可移动层进行重新布局。Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石工处理后,变成一堵美观的墙。
官网地址:http://masonry.desandro.com
二、Infinite
Scroll
是基于Infinite Scroll也是基于Jquery插件,用于当滚动条滚动时追加页面内容,有网友称这种效果为”无刷新无分页完美瀑布流”展现方式。
官网地址:http://infinite-scroll.com/
三、Maonsry+Infinite-Scroll实现滚动式分页
在Masonry的Example里有自动的与infinite-scroll结合的实现滚动式分页的例子,地址在这里http://masonry.desandro.com/demos/infinite-scroll.html。
实际上这个例子还是有点粗糙,如果打开浏览器的开发者工具进行脚本跟踪,会发现翻到第5页后会出现404加载出错,到github下载整个project,可以看到目录pages下有2.html,3.html,4.html,5.html。Infinite-Scroll默认会往下翻,找不到6.html后报错。而且这个翻页的例子是生成了静态的html。我这里只贴出实现一个动态分页的实现代码(只是其中一个解决办法),希望能起到抛砖引玉的作用,希望有网友分享更加完美的代码。
代码采用Freemarker模板语言实现,代码片断:
<script type="text/javascript" src="/js/jquery/ jquery.1.7.1.min.js"></script>
<script type="text/javascript" src="/js/jquery/plugin/jquery.masonry.min.js"></script>
<script type="text/js" src="/scripts/jquery/plugin/jquery.infinitescroll.min.js"></script>
<script type="text/javascript">
var totalpage = ${result.totalPage};//这里是从服务端得到总共分页数
var readedpage = 1;//当前滚动到的页数
</script>
<!-- page-nav 创建一个不可见对象,用于载入下一页数据入口元素点 -->
<nav id="page-nav">
<a href="${media_root}/billstudy/bill/question/all/null/1"></a>
</nav>
<div id="bills_main">
<div id="masonid" class="bills_conright">
<#if result?exists && (result.data.size() gt 0)>
<#list result.data as template>
<div class="bills_piccon">
//这里是每条数据的内容
</div>
</#list>
</#if>
</div>
<div class="clear"></div>
</div>
<script>
$jq(function(){
var $container = $jq('#masonid');
readedpage++;
if(totalpage>1){//如果总共只有一页,那就不需要滚动加载效果了
$jq("#page-nav a").attr("href","/billstudy/bill/question/all/null/"+readedpage);
$container.imagesLoaded(function(){
$container.masonry({
// itemSelector: '.bills_piccon'
// , columnWidth: 100
});
});//这里参数可以为空,但必须要初始化masonry,否则后面会报找不到方法appended。
$container.infinitescroll({
navSelector : '#page-nav', //指定page-nav
nextSelector : '#page-nav a', // page-nav下一页的链接
itemSelector : '.bills_piccon', // 要获取追加的页面元素
loading: {
finishedMsg: 'No more pages to load.',
img: 'http://i.imgur.com/6RMhx.gif'
}
},
// pathParse: ["/billstudy/bill/question/all/null/", ""],
// trigger Masonry as a callback
function( newElements ) {
// hide new items while they are loading
var $newElems = $jq( newElements ).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry('appended', $newElems, true);
readedpage++;//当前页滚动完后,定位到下一页
if(readedpage>totalpage){//如果滚动到超过最后一页,置成不要再滚动。
$jq("#page-nav").remove();
$container.infinitescroll({state:{isDone:true}});
}else{
//'#page-nav a置成下一页的值
$jq("#page-nav a").attr("href","/billstudy/bill/question/all/null/"+readedpage);
}
});
}
);
}
});
</script>
分享到:
相关推荐
"masonry+infinitescroll.zip"这个压缩包文件,结合了两个重要的JavaScript插件:Masonry和Infinite Scroll,它们一起用于创建美观且高效的无限滚动效果。下面我们将深入探讨这两个插件的工作原理、使用方法以及它们...
总的来说,jQuery Masonry和Infinitescroll为开发者提供了实现瀑布流布局的强大工具,通过它们可以创建出优雅且交互性强的网页,提高用户的浏览满意度。结合这两个插件,开发者可以轻松地构建出一个带有分页的瀑布流...
在实现Infinitescroll结合下拉刷新的例子中,我们需要关注以下几个关键知识点: 1. **JavaScript库**:Infinitescroll通常由JavaScript库驱动,如jQuery Infinite Scroll或Masonry Infinite Scroll。这些库提供了...
本文主要介绍如何在ASP.NET MVC4框架下,结合Masonry、ImagesLoaded和Infinitescroll库实现一个自动分页、图片预载和瀑布流展示的新闻或图片列表。以下是对这些技术的详细解释: 1. **Masonry**: Masonry是一个...
本文档主要介绍了如何在ASP.NET MVC4项目中使用Masonry、ImagesLoaded和Infinitescroll库来创建一个自动分页的瀑布流图片预加载效果。以下是相关技术的详细说明: 1. **Masonry**: Masonry是一个JavaScript布局库...
Masonry 是一个JavaScript库,由David DeSandro开发,用于实现类似于瀑布流的效果,即内容元素在页面上以不规则的多列布局呈现,类似于砖石堆砌。这种布局方式能够充分利用页面空间,使得视觉效果更吸引人。Masonry...
`jQuery.InfiniteScroll`可以与其他插件,如`jQuery.PrettyPhoto`或` Masonry`等,配合使用,以实现更丰富的效果。同时,可以通过自定义加载回调函数来处理新内容的呈现方式,例如动画效果。 ### 5. 注意事项 - ...
Infinitescroll.js是一个流行的jQuery插件,主要用于实现网页中的无限滚动效果,也称为滚动加载或无尽滚动。这个插件使得用户在浏览长页面时,无需翻页就能连续加载更多的内容,通常应用于新闻网站、社交媒体平台...
在这个教程中,我们将探讨如何使用Vue实现一个包含网络图片瀑布流、下拉刷新和上拉加载更多功能的组件。首先,我们需要理解瀑布流布局的基本概念,它是通过绝对定位使得元素按列排列,形成一种自适应的网格效果。 1...
瀑布流布局,也被称为Masonry布局,是一种网页布局方式,常用于图片展示,它使得页面上的元素能够像瀑布一样从上到下自然流动,每行的元素数量根据内容大小自动调整,形成一种错落有致的视觉效果。这种布局方式在...
为了优化性能,瀑布流布局通常采用分页加载或滚动加载(Infinite Scroll)。当用户滚动到页面底部时,新的图片内容会动态加载,而不是一次性加载所有图片,这样可以减少初次加载时的等待时间。 7. **性能优化** ...
Vuewaterfallcomponent 是一个基于 Vue.js 的瀑布流组件,它实现了瀑布流布局和无限滚动加载功能,使得在网页上展示大量多列内容时,用户可以流畅地浏览并加载更多内容。 瀑布流布局(Masonry Layout)是一种常见的...
对于瀑布流,可以选择使用现有的jQuery插件,如`masonry`或`infinite-scroll`,它们已经封装好了计算元素位置和动态加载内容的功能。 4. **无限滚动**:`infinite-scroll`是压缩包中提到的标签,它是一个jQuery插件...
瀑布流的核心实现依赖于JavaScript库,其中两个关键的库在提供的文件中已经包含:`jquery-1.4.2.min.js`是jQuery库,`jquery.infinitescroll.min.js`和`jquery.masonry.min.js`则是用于实现无限滚动和瀑布流布局的...
6. **动态加载**:如果内容很多,可以实现分页或者滚动加载(infinite scroll)。当用户滚动到页面底部时,通过 AJAX 加载更多内容,并调用 `masonry('appended', newContent)` 将新内容添加到现有瀑布流中,Masonry...
5. 瀑布流布局:前端使用CSS3和JavaScript库(如Masonry或Infinite Scroll)来实现瀑布流布局。Masonry库可以帮助我们动态调整元素的大小和位置,使其适应不同列宽,达到瀑布流效果。 6. 数据解析与渲染:前端接收...
在实际的代码实现中,瀑布流的布局算法可能有多种选择,例如Masonry布局或Infinite Scroll。Masonry布局允许元素根据自身大小自适应地填充网格,而Infinite Scroll则是在用户滚动到底部时无缝加载更多内容。 总的来...
1. 初始化:页面加载时,使用jQuery获取第一批次的元素,并根据预设的布局算法(如Masonry或Infinite Scroll)进行排列。 2. 响应式设计:考虑到不同设备的屏幕尺寸,瀑布流插件应支持响应式布局,自动调整元素大小...
瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在展示图片或者商品列表时广泛应用。这种布局方式模仿了真实世界中瀑布流下的水滴,使得页面元素自上而下,逐列填充,每列的高度不固定,形成错落有致...
在jQuery中实现瀑布流,通常会借助插件如jQuery Masonry或者Infinity Scroll。 jQuery Masonry是jQuery的一个插件,它允许开发者创建动态的网格布局。这种布局可以根据屏幕大小和内容的变化进行自我调整,使得页面...