我想有一个网格布局。 有点像Pinterest,除了项目有固定的高度(所以它应该容易得多)。
它应该是响应。 colums的数量应根据视口大小设置。
该DOM应该是一个容器内儿童的简单列表。我不想为每一行包装元素。我想是这样的:
<div class="container">
<div class="item">a</div>
<div class="item">b</div>
<div class="item">c</div>
<div class="item">d</div>
<div class="item">e</div>
<div class="item">f</div>
<div class="item">g</div>
<div class="item">h</div>
<div class="item">i</div>
</div>
项目的顺序事,所以DOM的“B”项应在“一”项目的右侧(而不是下)。
MY未遂
我已经做了this layout使用Flexbox的,但因为我有计算一些利润率与数学感觉相当哈克。另外我不明白如何控制我的Flexbox行之间的垂直空间,因为它似乎随着容器高度而增长。
这里是Codepen上面我LESS混入:
.flexboxGridMixin(@columnNumber,@spacingPercent) {
@contentPercent: 100% - @spacingPercent;
@sideMargin: @spacingPercent/(@columnNumber*2);
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
> * {
box-sizing: border-box;
width: (100% - @spacingPercent)/@columnNumber;
margin-left: @sideMargin;
margin-right: @sideMargin;
}
}
这好像做数学一样,不知怎的,战胜Flexbox的最初目的没有?
预期的答案
因此,有人可以解释我如何解决我的Flexbox的布局?或者告诉我什么是解决布局问题的最好,最优雅和最现代的方法?
我不想用花车,可能不是inline-block的,也不像Packery /砌体JS基础的解决方案
请使用现代CSS在你的答案,因为我已经知道如何用简单的解决这个问题旧的CSS/JS。我针对现代浏览器只(待定)
解决方案
这里是我final result,对于那些有兴趣重用此布局。
也是一个非常不错的视觉Flexbox的教程在这里:https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties
关于垂直空间,对我来说似乎很好。 – Ionut
你有没有看过新的引导程序4,它的测试版本,但它可能是有用的 – jsg
@Ionut问题不是关于它看起来不错或不是,它是如何控制它。例如,如果我想将垂直间距仅为1px,我不知道如何去做! –