我一直很努力,但墙面不能得到,因为我想它正好工作。 我使用的元素的宽度和高度而变化,但所有适合在一个网格(4种不同的尺寸,最小边距+的所有倍数)。 我也计算元素的分布(最小的7,所有其他4),可以适合精确。
然而,它是罕见的,砌筑设法完全适合他们,有时还有一个潜伏在底部,有时几个都是错误的。 它总是让在一个视图中,我可以看到需要什么物品被移动为它适合。
有没有一种方法,使砖石在移动元素更积极? 或者它去了两次,以确保没有空的空间?
我一直很努力,但墙面不能得到,因为我想它正好工作。 我使用的元素的宽度和高度而变化,但所有适合在一个网格(4种不同的尺寸,最小边距+的所有倍数)。 我也计算元素的分布(最小的7,所有其他4),可以适合精确。
然而,它是罕见的,砌筑设法完全适合他们,有时还有一个潜伏在底部,有时几个都是错误的。 它总是让在一个视图中,我可以看到需要什么物品被移动为它适合。
有没有一种方法,使砖石在移动元素更积极? 或者它去了两次,以确保没有空的空间?
你或许应该看看砌筑的“老大哥”同位素这里 。 提醒一下,如果有一个在一定的顺序排序或者固定在一定的顺序的元件 - 这比单个柱宽度宽 - 它们可以“块”在一个浏览器窄宽度的列。
编辑也许这拨弄解释这一点更好。 如果你看看那一个和 - 而在div的观察号码 - 你看,未来砖石元素了(红色元件5)无法适应可能在白色方块,它必须拿出元件4之后; 所以它必须结束方式,即,只有三排拟合,可以得到一个白色的差距。 也许你可以使用同位素的洗牌和/或重新布局的方法和牺牲订购您的元素按照严格的顺序? 最好将与您的问题的jsfiddle。
<article>
<div class="tile blue"><p>1</p></div>
<div class="tile black"><p>2</p></div>
<div class="tile tall yellow"><p>3</p></div>
<div class="tile grey"><p>4</p></div>
<div class="tile wide red"><p>5</p></div>
<div class="tile green"><p>6</p></div>
<div class="tile grey"><p>7</p></div>
<div class="tile blue"><p>8</p></div>
<div class="tile green"><p>9</p></div>
</article>
$('article').isotope({
itemSelector : '.tile',
masonry: {
columnWidth: 100
}
});
article .tile {
display: block;
float: left;
box-sizing: border-box;
width: 100px;
height: 100px;
font-size: 3em;
font-weight: 700;
padding: 0 6px;
color: #fff;
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
border:1px dotted black;
}
article .tile.wide {
width: 200px;
}
article .tile.tall {
height: 200px;
}
.tile.yellow { background: yellow; }
.tile.red { background: red; }
.tile.blue { background: blue; }
.tile.black { background: black; }
.tile.grey { background: grey; }
.tile.green { background: green; }
为了扩大对丹的回答,刚刚有这个问题我自己,似乎Packery是一个比较最新的; 更保持砌体的版本-由同一作者。 这不是很清楚,我为什么这两个项目存在作为独立的实体,只有固定在后面的错别字。
好消息是 - 这是几乎完全一个简易替换。 我不得不做出的唯一改变(除了名字masonry
- > packery
使用时)是删除一个选项,因为它是在Packery 默认和唯一的选择。
这是isFitWidth: true
,我无力的尝试,使砌体收拾东西了接近Packery如何很好地做,而完全不带任何选项。
与Packery另一个不错的变化是, gutter: x
适用于垂直和水平排水沟。 在砌体,这是唯一的水平-尽管琐碎margin-bottom
在CSS,这感觉就像一个黑客不必要的。