地址有:http://www.17sucai.com/pins/2657.html

如果你善于发现美,如果你善于观察新鲜的事物,如果你是一名有爱的前端攻城师或设计尸,那么你一定不会对下面图片中的结构感到陌生。没错,这就是现在很火的瀑布流。也称砌墙效果。就是这种不稳定结构,就是这种交错之美,震撼着每个浏览者的视神经。对于习惯了传统条条框框布局的读者来说,这种方式无疑会让他们的鼠标自由摇摆…

实现这个效果需要两个jQuery插件infinite-scroll和Masonry。

参数详解:

$('#content').infinitescroll({
  navSelector  : "div.navigation", //导航的选择器,会被隐藏
  nextSelector : "div.navigation a:first",//包含下一页链接的选择器
  itemSelector : "#content div.post",//你将要取回的选项(内容块)
  debug : true, //启用调试信息
  loadingImg   : "/img/loading.gif", //加载的时候显示的图片
  //默认采用:"http://www.infinite-scroll.com/loading.gif"
  animate: true, //当有新数据加载进来的时候,页面是否有动画效果,默认没有
  extraScrollPx: 50, //滚动条距离底部多少像素的时候开始加载,默认150
  bufferPx : 40,//载入信息的显示时间,时间越大,载入信息显示时间越短
  errorCallback: function(){},//当出错的时候,比如404页面的时候执行的函数
  localMode : true //是否允许载入具有相同函数的页面,默认为false
  },function(arrayOfNewElems){
  //程序执行完的回调函数
});

取消绑定事件的函数写法:$(window).unbind(‘.infscr’); 通过事件触发加载数据的写法: $(document).trigger(‘retrieve.infscr’); //比如加到某个click事件中

此插件还有一个鲜为人知的功能就是可以载入任何页面的选择器中的内容,可以是id以及是class,并转化到html存储。要比jquery自带的的load强大多了。

$('').load('/page/2/ #content div.post',function(){
$(this).appendTo('#content');
});

参数详解:

$(function(){
 $(?#container?).masonry({
 // options 设置选项
 itemSelector : ?.item?, //子类元素选择器
 columnWidth : 240 ,//一列的宽度 ,包括边距 220+10+10
 isAnimated:true, //使用jquery的布局变化,是否启用动画效果
 animationOptions:{
 //jquery animate属性 ,动画效果选项。比如渐变效果 Object { queue: false, duration: 500 }
 },
 gutterWidth:0,//列的间隙
 isFitWidth:true,//自适应宽度
 isResizableL:true,// 是否可调整大小
 isRTL:false,//使用从右到左的布局
 });
 });

合并效果

XML/HTML code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--容器代码-->
<div id="container">
 
    <div class="waterfall">
        <a href=""><img alt="" src="images/P (1).jpg"></a>
        <p>精致体验:LOFTER追求精致入微的视觉和交互体验,为每一片内容精心度量,让你的视角所触及的每一个像素,都蕴含独具匠心的精致设计。</p>
    </div>
    <div class="waterfall">
        <a href=""><img alt="" src="images/P (1).jpg"></a>
        <p>精致体验:LOFTER追求精致入微的视觉和交互体验,为每一片内容精心度量,让你的视角所触及的每一个像素,都蕴含独具匠心的精致设计。</p>
    </div>
 
    <!-- 还有好多。。。省略了。。。 -->
   
</div>
 
<!--分页代码-->
<div class="navigation" id="pnavigation">
     <a href="page/2.html">下一页</a>
</div>

CSS代码:

CSS code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#container { positionrelativemargin:0px autopadding:15px 10px; }
.waterfall {
    positionabsolute;
    top:1000px;  
    left:-1000px;
    border1px solid #DFDFDF;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    padding10px;
    background-color#FFF;
    width:192px;
    margin-top:15px;
    -webkit-transition: left .3s ease-in-out,top .3s ease-in-out;
       -moz-transition: left .5s ease-in-out,top .5s ease-in-out;
         -o-transition: left .3s ease-in-out,top .3s ease-in-out;
            transition: left .3s ease-in-out,top .3s ease-in-out;
}
.navigation { display:nonepadding:10px 0pxtext-align:center; }
.navigation a { display:inline-blockpadding:2px 5pxborder:1px solid #999background
JavaScript 代码:

 
 
JavaScript code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery.masonry.min.js"></script>
<script type="text/javascript" src="js/jquery.infinitescroll.min.js"></script>
<script type="text/javascript">
  $(function(){
     
    var $container = $('#container');
     
    $container.imagesLoaded(function(){
      $container.masonry({
        itemSelector: '.waterfall',
        gutterWidth:15,
        isFitWidth:true,
        isResizableL:true,
        columnWidth: 214
      });
    });
     
    $container.infinitescroll({
      navSelector  : '#pnavigation',    // selector for the paged navigation 
      nextSelector : '#pnavigation a',  // selector for the NEXT link (to page 2)
      itemSelector : '.waterfall',     // selector for all items you'll retrieve
      loading: {
          finishedMsg: 'No more pages to load.',
          img: 'http://i.imgur.com/6RMhx.gif'
        }
      },
      // trigger Masonry as a callback
      function( newElements ) {
        // hide new items while they are loading
        var $newElems = $( 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 ); 
        });
      }
    );
     
  });
 
</script>

详细的例子和下载两个JS的网址:http://yunpan.cn/QIWZShkkQqmem

在这个文件夹里面有两个案例,第一个案例里面要链接到数据库才能看到大致的效果,其中:

之后在网页头自己写一个js脚本

  1. <script>
  2. $(document).ready(function (){
  3. $("#container").infinitescroll({
  4. navSelector: "#navigation",      //页面分页元素--本页的导航,意思就是一个可以触发ajax函数的模块
  5. nextSelector: "#navigation a",  //下一页的导航
  6. itemSelector: ".scroll " ,             //此处我用了类选择器,选择的是你要加载的那一个块(每次载入的数据放的地方)
  7. animate: true,                          //加载时候时候需要动画,默认是false
  8. maxPage: 3,                            //最大的页数,也就是滚动多少次停。这个页码必须得要你从数据库里面拿
  9. });
  10. });
  11. </script>

3.或许你看到这里还是不太清楚网页怎么定义,这里给出我的demo,希望可以有帮助

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="utf-8">
  7. <title>无限翻页效果</title>
  8. <script src="css/infinite-scroll/jquery-1.6.4.js"></script>
  9. <script src="css/infinite-scroll/jquery.infinitescroll.js"></script>
  10. <script src="css/infinite-scroll/test/debug.js"></script>
  11. <script>
  12. $(document).ready(function (){               //别忘了加这句,除非你没学Jquery
  13. $("#container").infinitescroll({
  14. navSelector: "#navigation",     //页面分页元素--成功后自动隐藏
  15. nextSelector: "#navigation a",
  16. itemSelector: ".scroll " ,
  17. animate: true,
  18. maxPage: 3,
  19. });
  20. });
  21. </script>
  22. </head>
  23. <body>
  24. <div id="container">            <!-- 容器 -->
  25. <div class="scroll">         <!-- 每次要加载数据的数据块-->
  26. 第一页内容第一页内容<br>
  27. 第一页内容<br>第一页内容<br>第一页内容<br>
  28. 第一页内容<br>第一页内容<br>第一页内容<br>
  29. 第一页内容<br>第一页内容<br>第一页内容
  30. </div>
  31. </div>
  32. <div id="navigation" align="center">         <!-- 页面导航-->
  33. <a href="user/list?page=1"></a>        <!-- 此处可以是url,可以是action,要注意不是每种html都可以加,是跟当前网页有相同布局的才可以。另外一个重要的地方是page参数,这个一定要加在这里,它的作用是指出当前页面页码,没加载一次数据,page自动+1,我们可以从服务器用request拿到他然后进行后面的分页处理。-->
  34. </div>
  35. </body>
  36. </html>

1.js函数里还可定义的其他属性:

  1. debug        : true,                                         //用于调试,如果需要用到,只需在网页头引入官网demo里的debug.js文件
  2. loadingImg   : "/img/loading.gif",                   //加载时候显示的进度条,用户可以自定义
  3. loadingText  : "Loading new posts...",            //加载时显示的文字
  4. extraScrollPx: 50,                                            //离网页底部多少像素时触发ajax
  5. donetext     : "I think we've hit the end, Jim" ,     //加载完数据(到达底部时)显示的文字提醒
  6. errorCallback: function(){},

masonry插件和infinitescroll插件实现无刷新无分页完美瀑布流的更多相关文章

  1. Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)

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

  2. angular -- 无刷新做分页

    无刷新做分页参考地址: http://www.jq22.com/demo/angular201707111100/ 示例代码: <!DOCTYPE html> <html lang= ...

  3. Gridview各种功能+AspNetPager+Ajax实现无刷新存储过程分页 (留着用)

    存储过程: GetProductsCount1: GetProductsByPage: ) * @PageSize) +' id from test)' exec sp_executesql @sql ...

  4. jquery.pagination.js数据无刷新真分页

    定义一个全局的分页加载变量,并设置为true: var __isReSearch=true; 定义分页的一些数据: var __PageSize = 10; var __SearchCondition ...

  5. 【转】基于jquery的无刷新表格分页

    效果图 css样式 <style> html,body{margin: 0;padding:0} a:focus {outline: none;} /* 通用表格显示 */ table, ...

  6. 用 jQuery Masonry 插件创建瀑布流式的页面(转)

    瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...

  7. 用 jQuery Masonry 插件创建瀑布流式的页面

    瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...

  8. jquery.masonry瀑布流插件的4个使用步骤

    1.分别加载jquery插件与jquery.masonry插件两个文件 下载jquery插件:http://jquery.com也可以引用google的cdn外部jquery核心库JS文件下载jque ...

  9. 前端之masonry(图片瀑布流插件)

    加载代码: 1 2 <script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script ...

随机推荐

  1. smarty -- foreach用法

    {foreach},{foreachelse} 用于像访问序数数组一样访问关联数组 {foreach},{foreachelse} {foreach} is used to loop over an  ...

  2. PHP——字符串处理部分

    PHP——字符串处理 下面我们来讲一下我们经常使用的一些字符串处理的函数 1.string(变量);——取这个变量里面的字符串的长度 2.var_dump(变量a,变量b);——判断两个变量里面的字符 ...

  3. Android--HTTP协议

    1 package com.http.get; 2 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import ...

  4. sql server 查询性能最差的sql语句

    SELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_ ...

  5. 夺命雷公狗ThinkPHP项目之----企业网站14之文章修改页的完成

    这个其实也是挺容易的,我们思路先将栏目页给遍历出来: 这里用了catTree的方法,因为我们要对遍历出来的数据进行排序的,然后来到前端进行完成列表: <!doctype html> < ...

  6. 夺命雷公狗---DEDECMS----28dedecms浏览次数的完成

    在页面里显示每部影视作品的浏览量,显示方法如下所示: 首先我们要在内容模板文件里增加显示区: 然后到后保存下文章页的内容页的模版,然后去看下对我们的样式有没有什么影响: 看到这里我们就已经成功一点点噢 ...

  7. 一个noconsole程序

    貌似是一个外国人写的,作用应该是让控制台的程序运行的时候不会弹出那个控制台黑框.想用来让它不显示 php-cgi.exe 运行后的窗口,可是效果不是预期的. 项目在 github 的位置:https: ...

  8. NOIP201105铺地毯

    NOIP201105铺地毯 [问题描述]为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从1 到n.现在将这些地毯按照 ...

  9. android小功能:checkbox使用自己的背景点击切换背景

    xiazai_checkbox.xml <?xml version="1.0" encoding="utf-8"?> <selector xm ...

  10. V4L2应用程序框架-二【转】

    本文转载自:http://blog.csdn.net/tommy_wxie/article/details/11371439 V4L2驱动框架 主设备号: 81 次设备号:    0-63    64 ...