我使用 Masonry 来制作基于流体瓷砖的网格。在这个网格中,我想要没有排水沟,我想要 3 种不同类型的瓷砖:1x1、2x1、2x2 和 1x2。我有这个工作,但我唯一的问题是砌体似乎开始时在瓷砖之间有一些排水沟。如果我稍微调整一下窗口的大小,这些图块就会得到合适的大小并且没有装订线。
这是我的html:
<div class="masonry js-masonry" data-masonry-options='{"itemSelector": ".item" }'>
<div class="grid-sizer"></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;" ></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;"></div>
<div class="item w2" style="background:url('images/img-2.png'); background-size:100% 100%;"></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;"></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;"></div>
<div class="item w2" style="background:url('images/img-2.png'); background-size:100% 100%;"></div>
<div class="item w2" style="background:url('images/img-2.png'); background-size:100% 100%;"></div>
<div class="item w2 h3" style="background:url('images/img-3.png'); background-size:100% 100%;"></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;"></div>
<div class="item w2" style="background:url('images/img-2.png'); background-size:100% 100%;"></div>
<div class="item w2 h3" style="background:url('images/img-3.png'); background-size:100% 100%;"></div>
<div class="item w1" style="background:url('images/img-1.png'); background-size:100% 100%;"></div>
</div>
我的 CSS
.masonry {
background: #EEE;
width: 100%;
}
.masonry .item,
.masonry .grid-sizer {
width: 25%;
}
.masonry .item,
.masonry .grid-sizer {
height: 60px;
float: left;
}
.item { width: 25%; }
.item.w2 { width: 50%;}
还有一些用于调整窗口大小并获得适当高度的 Javascript:
var tileHeight = 0;
$(function(){
$(window).resize(function() {
onResize();
});
onResize();
});
function onResize(){
tileHeight = $(".grid-sizer").width();
$(".item").each(function(){
var $this = $(this);
if($this.hasClass("h2")){
$this.height(tileHeight*2);
} else if($this.hasClass("h3")){
$this.height(tileHeight*3);
} else{
$this.height(tileHeight);
}
});
};
这是一个屏幕截图:
在我调整大小后,它看起来应该是这样的: