js插件---瀑布流Masonry
js插件---瀑布流Masonry
一、总结
一句话总结:还是要去看官网,比amazeui上面介绍的详细很多
1、瀑布流的原理是什么?
给外层套好相对定位,里面的每一个弄好绝对定位,然后计算出每一个的left和top即可。
2、瀑布流如何使用?
a、指定外层,这里是#container
b、给里面的每一个套上.item
c、指定不同列之间的间距,columnWidth: 30
当然,你需要事先定好.item的宽度
124 <script>
125 var container = document.querySelector('#container');
126 var msnry = new Masonry( container, {
127 itemSelector: '.item',
128 columnWidth: 30
129 });
130 </script>
二、瀑布流Masonry
百度盘下载:
链接:https://pan.baidu.com/s/1G0SMIGsfcszT8WfzUMvxUA 密码:qaex
官网地址:https://masonry.desandro.com/options.html
1、截图
![](https://img2018.cnblogs.com/blog/1163900/201809/1163900-20180905154540428-117987062.png)
2、代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 <link rel="stylesheet" href="Css/amazeui.min.css"> 8 <script src="Scripts/jquery.min.js"></script> 9 <script src="Scripts/amazeui.min.js"></script> 10 <script src="Scripts/masonry.pkgd.min.js"></script> 11 <style> 12 .item{ 13 width: 30%; 14 } 15 </style> 16 </head> 17 <body> 18 <div id="container" style="padding-left: 30px;"> 19 <div class="item"> 20 <section class="am-panel am-panel-default"> 21 <header class="am-panel-hd"> 22 <h3 class="am-panel-title">面板标题</h3> 23 </header> 24 <div class="am-panel-bd"> 25 面面板内容容面板内容面板内容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容 26 </div> 27 </section> 28 </div> 29 <div class="item"> 30 <section class="am-panel am-panel-default"> 31 <header class="am-panel-hd"> 32 <h3 class="am-panel-title">面板标题</h3> 33 </header> 34 <div class="am-panel-bd"> 35 面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容 36 </div> 37 </section> 38 </div> 39 <div class="item"> 40 <section class="am-panel am-panel-default"> 41 <header class="am-panel-hd"> 42 <h3 class="am-panel-title">面板标题</h3> 43 </header> 44 <div class="am-panel-bd"> 45 面板内容 46 </div> 47 </section> 48 </div> 49 <div class="item"> 50 <section class="am-panel am-panel-default"> 51 <header class="am-panel-hd"> 52 <h3 class="am-panel-title">面板标题</h3> 53 </header> 54 <div class="am-panel-bd"> 55 面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容 56 </div> 57 </section> 58 </div> 59 <div class="item"> 60 <section class="am-panel am-panel-default"> 61 <header class="am-panel-hd"> 62 <h3 class="am-panel-title">面板标题</h3> 63 </header> 64 <div class="am-panel-bd"> 65 面板内容板内容容面板内容面板内容面板内容 66 </div> 67 </section> 68 </div> 69 <div class="item"> 70 <section class="am-panel am-panel-default"> 71 <header class="am-panel-hd"> 72 <h3 class="am-panel-title">面板标题</h3> 73 </header> 74 <div class="am-panel-bd"> 75 面面板内容容面板内容面板内容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容 76 </div> 77 </section> 78 </div> 79 <div class="item"> 80 <section class="am-panel am-panel-default"> 81 <header class="am-panel-hd"> 82 <h3 class="am-panel-title">面板标题</h3> 83 </header> 84 <div class="am-panel-bd"> 85 面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容 86 </div> 87 </section> 88 </div> 89 <div class="item"> 90 <section class="am-panel am-panel-default"> 91 <header class="am-panel-hd"> 92 <h3 class="am-panel-title">面板标题</h3> 93 </header> 94 <div class="am-panel-bd"> 95 面板内容 96 </div> 97 </section> 98 </div> 99 <div class="item"> 100 <section class="am-panel am-panel-default"> 101 <header class="am-panel-hd"> 102 <h3 class="am-panel-title">面板标题</h3> 103 </header> 104 <div class="am-panel-bd"> 105 面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容面板内容板内容容面板内容面板内容 106 </div> 107 </section> 108 </div> 109 <div class="item"> 110 <section class="am-panel am-panel-default"> 111 <header class="am-panel-hd"> 112 <h3 class="am-panel-title">面板标题</h3> 113 </header> 114 <div class="am-panel-bd"> 115 面板内容板内容容面板内容面板内容面板内容 116 </div> 117 </section> 118 </div> 119 120 </div> 121 122 123 </body> 124 <script> 125 var container = document.querySelector('#container'); 126 var msnry = new Masonry( container, { 127 itemSelector: '.item', 128 columnWidth: 30 129 }); 130 </script> 131 </html>
三、官网使用截取
HTML
Include the Masonry .js
file in your site.
<script src="/path/to/masonry.pkgd.min.js"></script>
Masonry works on a container grid element with a group of child items.
<div class="grid">
<div class="grid-item">...</div>
<div class="grid-item grid-item--width2">...</div>
<div class="grid-item">...</div>
...
</div>
CSS
All sizing of items is handled by your CSS.
.grid-item { width: 200px; }
.grid-item--width2 { width: 400px; }
Initialize with jQuery
You can use Masonry as a jQuery plugin: $('selector').masonry()
.
$('.grid').masonry({
// options
itemSelector: '.grid-item',
columnWidth: 200
});
Initialize with Vanilla JavaScript
You can use Masonry with vanilla JS: new Masonry( elem, options )
. The Masonry()
constructor accepts two arguments: the container element and an options object.
var elem = document.querySelector('.grid');
var msnry = new Masonry( elem, {
// options
itemSelector: '.grid-item',
columnWidth: 200
});
// element argument can be a selector string
// for an individual element
var msnry = new Masonry( '.grid', {
// options
});
Initialize in HTML
You can initialize Masonry in HTML, without writing any JavaScript. Add data-masonry
attribute to the container element. Options can be set in its value.
<div class="grid" data-masonry='{ "itemSelector": ".grid-item", "columnWidth": 200 }'>