转载至 http://wuyuans.com/2013/08/jquery-masonry-infinite-scroll/

jQuery无限载入瀑布流

好久没更新日志了,一来我比较懒,二来最近也比较忙,惭愧啊。这次我要写的是关于瀑布流网页布局的方法,在网页布局中瀑布流算比较新颖的方式,最近我也试了一下,把本站的电影资源独立出来做了一个子站。因为电影都是以海报形式展示的,图片会比较多,瀑布流应该会比较合适,最后的完成品在这里:Wuyuan's Movie。使用jQuery实现,用到三个插件:Masonry、Infinite Scroll和imagesLoaded。

1.Masonry

Masonry是一款网页布局插件,能帮你自动排列网页元素,比如div和li,我这里使用li来放电影资源。
Masonry主页:http://masonry.desandro.com/
github项目:https://github.com/desandro/masonry
用法很简单,在他主页里有例子。

var $container = $('#container');

// initialize

$container.masonry({

columnWidth:200,//每列的宽度,不设就按第一个计算

itemSelector:'.item',//需要排列的元素

gutter:20,//每列的间隙

});

2.Infinite Scroll

Infinite Scroll是一款自动载入的插件,当滚动条靠近底部时会自动读取下一页的元素,并添加到相关容器里,配合Masonry实现无限载入。
Infinite Scroll主页:http://www.infinite-scroll.com/
github项目:https://github.com/paulirish/infinite-scroll
用法也很简单,我这里列举一些常用的参数。

$('.selector').infinitescroll({

//导航所在容器

navSelector:"div.navigation",

//导航中下一页的链接地址

nextSelector:"div.navigation a:first",

//需要添加的新元素

itemSelector:"div.post",

//动画效果

animate:false,

//动画效果长度

extraScrollPx:150,

//导航条到底部的距离

pixelsFromNavToBottom:200,

},

function( newElements ){

//添加新元素

})

);

很多文章中都说extraScrollPx是触发加载的滚动条剩余长度,但我改了该值后没什么反应,后来看了代码才发现这个只是动画效果触发是滚动条向下滚动的距离而已,真正可以触发加载的是下面这个pixelsFromNavToBottom,他表示导航栏到底部的距离,infinitescroll会在下拉到导航栏附近触发自动加载,也就是当滚动条剩余长度小于pixelsFromNavToBottom这个值时触发加载。后面那个函数是读取到新元素的加载函数,需要和Masonry配合,我将在下面讲到。

3.imagesLoaded

在用Masonry加载图片时会出现一个问题,因为图片的加载比较慢,Masonry会读取不到图片的高度而错误的计算元素的高度,这样就会使布局重叠。解决办法就是在图片全部加载后再使用Masonry布局,这就要用到imagesLoaded这个插件,在低版本jQuery中他是内置的函数,现在已经独立出来作为一个插件调用了。
imagesLoaded主页:http://desandro.github.io/imagesloaded/
github项目:https://github.com/desandro/imagesloaded

$('#container').imagesLoaded(function(){

// images have loaded

});

4.实际应用

将上面三个插件组合到一起就可以做出无限加载的瀑布流了,下面以我的子站为例子说一下。我所有资源使用ul和li来组织,如下。

<ulid="masonry">

<liclass="box"></li>

<liclass="box"></li>

<liclass="box"></li>

</ul>

<divid="npage"><ahref="http://movie.wuyuans.com/2.html">下一页</a></div>

下一页的链接在#npage中,下面是js代码。

    1. <scripttype="text/javascript"src="/static/jquery-1.7.1.js"></script>
    2. <scripttype="text/javascript"src="/static/masonry.pkgd.min.js"></script>
    3. <scripttype="text/javascript"src="/static/jquery.infinitescroll.min.js"></script>
    4. <scripttype="text/javascript"src="/static/imagesloaded.pkgd.min.js"></script>
    5. <scripttype="text/javascript">
    6. $(function(){
    7. var $container = $('#masonry');
    8. $container.imagesLoaded(function(){
    9. $container.masonry({
    10. columnWidth:235,
    11. itemSelector:'.box',
    12. gutter:20
    13. });
    14. });
    15. $container.infinitescroll({
    16. navSelector :"#npage",
    17. nextSelector :"#npage a",
    18. itemSelector :".box",
    19. pixelsFromNavToBottom:300
    20. },
    21. function( newElements ){
    22. //首先隐藏
    23. var $newElems = $( newElements ).css({ opacity:0});
    24. $newElems.imagesLoaded(function(){
    25. //布局时显示
    26. $newElems.animate({ opacity:1});
    27. $container.masonry('appended', $newElems,true);
    28. });
    29. });
    30. });
    31. </script>

jQuery无限载入瀑布流 【转载】的更多相关文章

  1. jquery实现无限滚动瀑布流实现原理

    现在类似于pinterest这类的表现效果很火,其实我比较中意的是他的布局效果,而不是那种瀑布流. 虽然我不是特别喜欢这种瀑布流的表现样式,但是还是写了几篇关于无限滚动瀑布流效果的文章,Infinit ...

  2. jQuery动态网格瀑布流插件Masonry

    Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...

  3. jQuery淡入淡出瀑布流效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. jquery插件实现瀑布流

    jquery插件实现瀑布流<!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

  5. Jquery实现图片瀑布流思路-简单版

    目录 Jquery实现图片瀑布流思路-简单版 1.预备 2.开始 1.声明 2.主体 3.窗体大小改变事件 Jquery实现图片瀑布流思路-简单版 注意:本篇文章基于知道每张图片的实际尺寸的情况下 特 ...

  6. 基于jQuery的简易瀑布流实现

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Masonry + Ajax 实现无限刷新瀑布流

    效果就如我的个人站yooao.cc,把我实现的思路分享给大家. Masonry渲染页面如果有图片时需要imagesLoaded辅助,不然有可能会造成布局重叠. 一个大体的思路:前端取得最后一篇文章的i ...

  8. jQuery插件之-瀑布流插件

    jquery.wookmark.js 一个实现瀑布流自适应宽度布局的jQuery插件—jquery.wookmark.js , wookmark使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...

  9. jquery练习之瀑布流

    最近有空简单学习了下瀑布流,写完后想和大家一起分享下,但我知道我的代码有很多缺陷不足,希望多多包涵.(纯属兴趣非专业学习人士) 众所周知,瀑布流大概分为2种,一种是浮动式的瀑布流,一种是定位式的瀑布流 ...

随机推荐

  1. springcloud3(六) 服务降级限流熔断组件Resilience4j

    代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-gateway/src/test/java/com/ ...

  2. 文件与文件系统的压缩与打包 tar gzip bzip2

    1:linux下常见的压缩文件后缀: .gz .zip .bz2 打包后的: .tar.gz .tar.zip .tar.bz2 2:gzip: 压缩:gzip file 解压:gunzip file ...

  3. JMeter学习笔记--函数学习(_csvRead 函数)

    JMeter函数可以很方便实现一些小功能,几乎可以用于测试计划中的任何元件.一个函数的调用如下:${_functionName(var1,var2,var3)},_functionName匹配函数名, ...

  4. Python 官方研讨会:彻底移除 GIL 真的可行么?

    作者:Łukasz Langa 译者:豌豆花下猫,来源:Python猫 原文:https://lukasz.langa.pl/5d044f91-49c1-4170-aed1-62b6763e6ad0 ...

  5. [luogu6702]Path

    维护每一个点到根路径的异或和(记作$d_{k}$),根据异或自反性,$(x,y)$的异或和即$d_{x}\oplus d_{y}$ 考虑两条路径的lca,选择其中深度较大的点,另一条路径必然在其子树外 ...

  6. [bzoj1222]产品加工

    用f[i][j]表示完成前i个任务,在A机器上加工j小时时B机器上最少要工作多小时,转移就分为三种,即$f[i][j]=min(f[i-1][j-t1],f[i-1][j]+t2,f[i-t3]+t3 ...

  7. OAuth 2.1 的进化之路

    背景 2010年, OAuth 授权规范 1.0 (rfc 5849) 版本发布, 2年后, 更简单易用的 OAuth 2.0 规范发布(rfc 6749), 这也是大家最熟悉并且在互联网上使用最广泛 ...

  8. 在安卓开发中需要格式化桌面icon图标

    使用以下在线工具即可实现http://www.makeicon.cc/home/index

  9. 【Cloud Computing】Hadoop环境安装、基本命令及MapReduce字数统计程序

    [Cloud Computing]Hadoop环境安装.基本命令及MapReduce字数统计程序 1.虚拟机准备 1.1 模板机器配置 1.1.1 主机配置 IP地址:在学校校园网Wifi下连接下 V ...

  10. java 装饰器模式实现代码

    目录 1.实现装饰器模式 1.1.公共接口 1.2.接口实现 1.3.装饰器 1.4.装饰构件 1.5.测试装饰器 上图展示的是io流中的一个装饰者模式的代码结构 1.实现装饰器模式 汽车厂生产汽车实 ...