首先创建一个隐藏的 div 并将真实数据放入其中。在这个例子中,我们称之为#hidden。然后为主砌体创建一个空白 div。我们称之为#masonry。所以,到目前为止,我们有这样的东西:
<div id="hidden"> ... CONTAINING THE ACTUAL DATA ... </div>
<div id="masonry"></div> <!-- which is a blank div -->
这些项目将通过它们的 data-rel 检测到,因此不要忘记将所有过滤器作为项目的 data-rel。例如:
<div class="work" data-rel="Template Design">CONTENT</div>
作为过滤器,创建一个这样的列表:
<ul id="port_filter">
<li data-rel="all" class="active">All</li>
<li data-rel="Graphic Design">Graphic Design</li>
<li data-rel="Template Design">Template Design</li>
<li data-rel="Programming">Programming</li>
</ul>
现在,以这种方式处理初始填充和过滤功能:
// Initial loading
var all = $('#hidden .work');
$('#masonry').html(all);
$('#masonry').masonry({
itemSelector: '.work',
columnWidth: 299
});
// Portfolio filtering
$('#port_filter li').click(function(){
if($(this).hasClass('active')) {
return;
}
else {
$('#port_filter li').removeClass('active');
var filter = $(this).attr('data-rel');
$(this).addClass('active');
if(filter == 'all') {
$('#masonry').html(all);
$('#masonry').masonry();
}
else {
$('#masonry').html('').html(all);
removed = null;
var removed = $('#masonry .work[data-rel!="' + filter + '"]');
removed.remove();
$('#masonry').masonry();
}
}
});
此方法在 Masonry v4 和最佳版本上进行了测试。