`
truemylife
  • 浏览: 230950 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流

阅读更多

一、Masonry

 

是基于Jquery插件,用于对CSS布局的可移动层进行重新布局。Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石工处理后,变成一堵美观的墙。

         官网地址:http://masonry.desandro.com

 

二、Infinite Scroll

是基于Infinite Scroll也是基于Jquery插件,用于当滚动条滚动时追加页面内容,有网友称这种效果为无刷新无分页完美瀑布流展现方式。

官网地址:http://infinite-scroll.com/

 

三、Maonsry+Infinite-Scroll实现滚动式分页

MasonryExample里有自动的与infinite-scroll结合的实现滚动式分页的例子,地址在这里http://masonry.desandro.com/demos/infinite-scroll.html

实际上这个例子还是有点粗糙,如果打开浏览器的开发者工具进行脚本跟踪,会发现翻到第5页后会出现404加载出错,到github下载整个project,可以看到目录pages下有2.html,3.html,4.html,5.htmlInfinite-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>
 

 

分享到:
评论
2 楼 benjeman 2015-01-08  
<nav id="page-nav">,第一次加载成功后,就一直会加载这个,不会变成递增页面是怎么回事
1 楼 Jgenius 2013-09-06  
你这样控制有点麻烦infinitescroll 有个参数
maxPage: 1,  //最大的页数,也就是滚动多少次停。这个页码必须得要你从数据库里面拿 ,但是我还有个问题,你如果要给你这个分页加载一定好,再做个分页功能怎么弄 

相关推荐

    masonry+infinitescroll.zip

    "masonry+infinitescroll.zip"这个压缩包文件,结合了两个重要的JavaScript插件:Masonry和Infinite Scroll,它们一起用于创建美观且高效的无限滚动效果。下面我们将深入探讨这两个插件的工作原理、使用方法以及它们...

    jQuery masonry和infinitescroll制作带分页的瀑布流插件

    总的来说,jQuery Masonry和Infinitescroll为开发者提供了实现瀑布流布局的强大工具,通过它们可以创建出优雅且交互性强的网页,提高用户的浏览满意度。结合这两个插件,开发者可以轻松地构建出一个带有分页的瀑布流...

    infinitescroll的下拉刷新的例子

    在实现Infinitescroll结合下拉刷新的例子中,我们需要关注以下几个关键知识点: 1. **JavaScript库**:Infinitescroll通常由JavaScript库驱动,如jQuery Infinite Scroll或Masonry Infinite Scroll。这些库提供了...

    Masonry ImagesLoaded Infinitescroll 自动分页图片预载瀑布流实现.pdf

    本文主要介绍如何在ASP.NET MVC4框架下,结合Masonry、ImagesLoaded和Infinitescroll库实现一个自动分页、图片预载和瀑布流展示的新闻或图片列表。以下是对这些技术的详细解释: 1. **Masonry**: Masonry是一个...

    Masonry ImagesLoaded Infinitescroll 自动分页图片预载瀑布流实现.docx

    本文档主要介绍了如何在ASP.NET MVC4项目中使用Masonry、ImagesLoaded和Infinitescroll库来创建一个自动分页的瀑布流图片预加载效果。以下是相关技术的详细说明: 1. **Masonry**: Masonry是一个JavaScript布局库...

    Angularjs-Masonry-Infinit-scroll:具有无限滚动和砖石平铺布局的 Angularjs

    Masonry 是一个JavaScript库,由David DeSandro开发,用于实现类似于瀑布流的效果,即内容元素在页面上以不规则的多列布局呈现,类似于砖石堆砌。这种布局方式能够充分利用页面空间,使得视觉效果更吸引人。Masonry...

    jquery.infinitescroll滑动加载更多

    `jQuery.InfiniteScroll`可以与其他插件,如`jQuery.PrettyPhoto`或` Masonry`等,配合使用,以实现更丰富的效果。同时,可以通过自定义加载回调函数来处理新内容的呈现方式,例如动画效果。 ### 5. 注意事项 - ...

    infinitescroll.zip

    Infinitescroll.js是一个流行的jQuery插件,主要用于实现网页中的无限滚动效果,也称为滚动加载或无尽滚动。这个插件使得用户在浏览长页面时,无需翻页就能连续加载更多的内容,通常应用于新闻网站、社交媒体平台...

    vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)

    在这个教程中,我们将探讨如何使用Vue实现一个包含网络图片瀑布流、下拉刷新和上拉加载更多功能的组件。首先,我们需要理解瀑布流布局的基本概念,它是通过绝对定位使得元素按列排列,形成一种自适应的网格效果。 1...

    8款Jquery+html5实现无限加载瀑布流特效

    瀑布流布局,也被称为Masonry布局,是一种网页布局方式,常用于图片展示,它使得页面上的元素能够像瀑布一样从上到下自然流动,每行的元素数量根据内容大小自动调整,形成一种错落有致的视觉效果。这种布局方式在...

    Masonry图片筛选功能瀑布流布局画廊.zip

    为了优化性能,瀑布流布局通常采用分页加载或滚动加载(Infinite Scroll)。当用户滚动到页面底部时,新的图片内容会动态加载,而不是一次性加载所有图片,这样可以减少初次加载时的等待时间。 7. **性能优化** ...

    vue瀑布流组件vuewaterfallcomponent

    Vuewaterfallcomponent 是一个基于 Vue.js 的瀑布流组件,它实现了瀑布流布局和无限滚动加载功能,使得在网页上展示大量多列内容时,用户可以流畅地浏览并加载更多内容。 瀑布流布局(Masonry Layout)是一种常见的...

    JQUERY瀑布流

    对于瀑布流,可以选择使用现有的jQuery插件,如`masonry`或`infinite-scroll`,它们已经封装好了计算元素位置和动态加载内容的功能。 4. **无限滚动**:`infinite-scroll`是压缩包中提到的标签,它是一个jQuery插件...

    瀑布流+无限滚动加载数据

    瀑布流的核心实现依赖于JavaScript库,其中两个关键的库在提供的文件中已经包含:`jquery-1.4.2.min.js`是jQuery库,`jquery.infinitescroll.min.js`和`jquery.masonry.min.js`则是用于实现无限滚动和瀑布流布局的...

    基于 jQuery Masonry的网页瀑布流

    6. **动态加载**:如果内容很多,可以实现分页或者滚动加载(infinite scroll)。当用户滚动到页面底部时,通过 AJAX 加载更多内容,并调用 `masonry('appended', newContent)` 将新内容添加到现有瀑布流中,Masonry...

    绝美电子商务瀑布流首页(c#实现无限滚动加载)

    5. 瀑布流布局:前端使用CSS3和JavaScript库(如Masonry或Infinite Scroll)来实现瀑布流布局。Masonry库可以帮助我们动态调整元素的大小和位置,使其适应不同列宽,达到瀑布流效果。 6. 数据解析与渲染:前端接收...

    PHP实现的瀑布流显示加延迟加载

    在实际的代码实现中,瀑布流的布局算法可能有多种选择,例如Masonry布局或Infinite Scroll。Masonry布局允许元素根据自身大小自适应地填充网格,而Infinite Scroll则是在用户滚动到底部时无缝加载更多内容。 总的来...

    jquery + php 瀑布流插件

    1. 初始化:页面加载时,使用jQuery获取第一批次的元素,并根据预设的布局算法(如Masonry或Infinite Scroll)进行排列。 2. 响应式设计:考虑到不同设备的屏幕尺寸,瀑布流插件应支持响应式布局,自动调整元素大小...

    瀑布流兼容移动端ZeptojQuery插件下拉刷新、上拉加载更多

    瀑布流布局,又称Masonry布局,是一种常见的网页布局方式,尤其在展示图片或者商品列表时广泛应用。这种布局方式模仿了真实世界中瀑布流下的水滴,使得页面元素自上而下,逐列填充,每列的高度不固定,形成错落有致...

    jquery瀑布流

    在jQuery中实现瀑布流,通常会借助插件如jQuery Masonry或者Infinity Scroll。 jQuery Masonry是jQuery的一个插件,它允许开发者创建动态的网格布局。这种布局可以根据屏幕大小和内容的变化进行自我调整,使得页面...

Global site tag (gtag.js) - Google Analytics