在我的项目中的效果 : http://lixianglong3210.gitee.io/packery/
官网地址: https://packery.metafizzy.co/
入门用法
1、筛选过滤
(官网例子:https://codepen.io/desandro/pen/mjcGq)
html
<h1>Packery demo - Draggabilly with appended items</h1>
<div class="packery">
<div class="item w4 h2"></div>
<div class="item w2 h2"></div>
<div class="item w2 h4"></div>
<div class="item w2 h2"></div>
<div class="item w4 h4"></div>
<div class="item w2 h2"></div>
<div class="item w2 h4"></div>
<div class="item w4 h4"></div>
<div class="item w2 h2"></div>
<div class="item w2 h2"></div>
</div>
<p><button id="add-items">Add more items</button>
css
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body { font-family: sans-serif; }
.packery {
background: #FDD;
background: hsla(45, 100%, 40%, 0.2);
max-width: 520px;
}
/* clearfix */
.packery:after {
content: ' ';
display: block;
clear: both;
}
.item {
width: 40px;
height: 40px;
float: left;
background: #C09;
border: 4px solid #333;
border-color: hsla(0, 0%, 0%, 0.3);
}
.item:hover {
border-color: white;
cursor: move;
}
.item.w2 { width: 80px; background: #9C0; }
.item.h2 { height: 80px; background: #0C9; }
.item.h4 { height: 160px; background: #C90; }
.item.w4 { width: 160px; background: #90C; }
.item.is-dragging,
.item.is-positioning-post-drag {
border-color: white;
background: #09F;
z-index: 2;
}
button {
font-size: 20px;
}
javascript
// https://packery.metafizzy.co/packery.pkgd.js and
// https://draggabilly.desandro.com/draggabilly.pkgd.js added as external resource
var $container = $('.packery');
$container.packery({
columnWidth: 80,
rowHeight: 80
});
// bind draggabilly events to item elements
$container.find('.item').each( makeEachDraggable );
function makeEachDraggable( i, itemElem ) {
// make element draggable with Draggabilly
var draggie = new Draggabilly( itemElem );
// bind Draggabilly events to Packery
$container.packery( 'bindDraggabillyEvents', draggie );
}
// add more items
$('#add-items').click( function() {
var items = '<div class="item w2 h2"></div>' +
'<div class="item w2 h2"></div>' +
'<div class="item w4 h2"></div>' +
'<div class="item h4 w4"></div>' +
'<div class="item w2 h2"></div>' +
'<div class="item w2 h4"></div>' +
'<div class="item w2 h2"></div>';
var $items = $(items);
// add to packery layout
$container.append( $items )
.packery( 'appended', $items )
// make item elements draggable
$items.each( makeEachDraggable );
});