GoldYves · 发表于 2017-01-11

文章85 · 评论0

jquery.masonry瀑布流插件用法详解

字数5720 · 浏览 848 · 评论 0

Masonry是一个瀑布流布局jQuery插件,采用的原理就是利用position: absolute;相对定位,放置每个元素的位置,所以这个插件需要等到网页加载完成以后才能显示效果,本站的瀑布流效果也是采用的这个插件。几天就给大家分享一下关于Masonry瀑布流插件的一些使用方法。

一、Masonry介绍

类似的布局,似乎一夜之间出现在国内外大大小小的网站上,比如 Pinterest (貌似是最早使用这种布局的网站了),Mark之,蘑菇街,点点网,以及淘宝最新上线的“哇哦” 等等。通常,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。所以,我们给这样的布局起了一个形象的名字 — 瀑布流式布局。

masonry-demo

Masonry是一款很好用的jquery网页布局插件,它可以去掉不同高度div之间的空白,让你的网页看上去更加的整齐、漂亮!

二、Masonry使用方法

1、简单调用

首先要引入jquery.masonry.min.js文件和jquery插件,注意引用文件的顺序。

  1. <script type="text/javascript" src="jquery.min.js"></script>
  2. <script type="text/javascript" src="jquery.masonry.min.js"></script>

调用Masonry

  1. $(function(){
  2. $(‘#container’).masonry({
  3. itemSelector : ‘.item’
  4. });
  5. });

2、使用参数

参数是以json的方式传入到插件函数中,和以往的其他插件的调用方法并没有不同,不过他还有其他的方式去调用,比如:

  1. var container = document.querySelector(‘#container’);
  2. var msnry = new Masonry( container );
  3. container.appendChild( elem );
  4. msnry.appended( elem );
  5. msnry.layout();

更多调用方法请参考:http://masonry.desandro.com/methods.html

三、参数介绍

  • itemSelector:class选择器,默认’.item’
  • columnWidth:一列的宽度
  • isAnimated:使用jquery的布局变化,默认true
  • animationOptions:animate属性渐变效果(Object { queue: false, duration: 500 })
  • gutterWidth:列的间隙 Integer
  • isFitWidth:适应宽度Boolean
  • isResizableL:是否可调整大小 Boolean
  • isRTL:使用从右到左的布局 Boolean

四、常见的调用方法

调用masonry插件的方法格式是:$(‘#container’).masonry( ‘methodName’, [optionalParameters] ),例如:

  • .masonry( ‘appended’, $content, isAnimatedFromBottom )//触发添加到container的项目的布局
  • .masonry( ‘destroy’ )// 完全移除masonry的功能 返回到元素预初始化状态
  • .masonry( ‘layout’, $items, callback )// 指定项目的布局
  • .masonry( ‘option’, options ) //设置option
  • .masonry( ‘reloadItems’ ) //重新聚合所有项目以当前的顺序
  • .masonry( ‘reload’ ) //用于预先考虑或者插入项目 .masonry( ‘reloadItems’ )的简化版
  • .masonry( ‘remove’, $items ) //从masonry实例或dom中移除项目

1、关于获取图片高度

使用imagesLoaded.js插件防止获取不到图片的高度

  1. var $container = $(‘#container’);
  2. $container.imagesLoaded( function(){
  3. $container.masonry({
  4. itemSelector : ‘.item’
  5. });
  6. });

2、使用JS实现动画

  1. var $container = $(‘#container’);
  2. $container.imagesLoaded( function(){
  3. $container.masonry({
  4. itemSelector : ‘.item’,
  5. isAnimated : true
  6. });
  7. });

3、无限滚动加载

  1. $container.infinitescroll({
  2. navSelector : ‘#page-nav’,// selector for the paged navigation
  3. nextSelector : ‘#page-nav a’, // selector for the NEXT link (to page 2)
  4. itemSelector : ‘.item’, // selector for all items you’ll retrieve
  5. loading: {
  6. finishedMsg: ‘The END!’,
  7. img: ‘6RMhx.gif’
  8. }
  9. },
  10. // trigger Masonry as a callback
  11. function( newElements ) {
  12. // hide new items while they are loading
  13. var $newElems = $( newElements ).css({ opacity: 0 });
  14. // ensure that images load before adding to masonry layout
  15. $newElems.imagesLoaded(function(){
  16. // show elems now they’re ready
  17. $newElems.animate({ opacity: 1 });
  18. $container.masonry( ‘appended’, $newElems, true );
  19. });
  20. }
  21. );

4、通过a标签来制定加载内容

  1. <div id="container">
  2. <div class="item">1</div>
  3. <div class="item">2</div>
  4. <div class="item">3</div>
  5. </div>
  6. <nav id="page-nav">
  7. <a href="masonry06-2.html"></a>
  8. </nav>

五、如何获取

官方网站 | 在线示例 | 下载地址

本文系作者 GoldYves 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

问说网手机版

躺着 站着 跪着轻松访问

更多 热门话题

APP界面

APP界面

文章 41517

APP欣赏

APP欣赏

文章 41450

APP手机界面

APP手机界面

文章 41440

图片素材

图片素材

文章 29463

高清图片

高清图片

文章 26225

更多 推荐作者

问说网

文章 13116

GallupDarnell

文章 117

GibbonRoy

文章 119

StuartKelly

文章 114

YeatesGeoffrey

文章 113

发布评论

顶部 反馈 评论 底部

意见反馈

感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

您的反馈我们已收到!

感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!