jQuery无刷新无分页完美瀑布流

11

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

瀑布流

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

infinite-scroll-jquery

参数详解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$('#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事件中

插件的核心代码是利用了jQuery的load方法来加载页面

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

官方首页及下载地址: http://www.infinite-scroll.com/

Masonry

参数详解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 $(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,//使用从右到左的布局
 });
 });

官方首页及下载地址:http://masonry.desandro.com/index.html

双剑合璧

演示代码:

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
<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
<script src="jquery.infinitescroll.min.js" type="text/javascript"></script>
<script src="jquery.masonry.min.js" type="text/javascript"></script>
 
<script type="text/javascript">
$(function(){
var $container = $('#content ul'); //设置容器
$('#content ul').infinitescroll({   
    navSelector  : "div.page .pages",  //导航的选择器
    nextSelector : "div.page .pages a.nextpage",  //包含下一页链接的选择器
    itemSelector : "#content ul li"  //你将要取回的选项(内容块)
  }, function( newElements ) {
		//程序执行完的回调函数
		var $newElems = $( newElements );
		$container.masonry( 'appended', $newElems );
  });
 
 
   $('#content').masonry({
    itemSelector : '#content li', //子类元素
    columnWidth : 251 //一列的宽度
  });
 
});
</script>

最终效果演示

本文部分资料整理自:Niumowang

共 11 条评论

  1. 回复

    朽木兄,你能帮我看下我网站瀑布流重叠的原因吗,谢谢

    • 回复

      我看了下,没发现什么问题啊。

      • 回复

        你滚动条要是拉快点就会出现,因为我现在那个空间挺慢的,所以不明显,但你拉快点,下面的分页条就会错位,位置会移上去。用的是iphoto4.0这个主题,本地测试经常重叠

  2. 回复

    如果能出一个wp模板就爽了,对于我这种菜鸟根本玩不转的

  3. 回复

    怎么把他引到我的页面里面去啊?大哥大姐们帮帮我吧????????

    • 回复

      如果可能的话,朽木会协助你。

  4. 回复

    效果不错,腾讯微博频道也是这种效果。

  5. 回复

    这效果略叼!

  6. 回复

    哎 说的还是wordpress ~~~俺用的是 emlog~

    • 回复

      NO NO 通用的 跟WP无关。

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...