【发布时间】:2017-03-09 07:48:53
【问题描述】:
我的目标是使用 CSS 网格布局进行两列砌体布局。给定一个带有子元素的元素:
<section>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</section>
让孩子们将自己交替排列成列。我的想法是有两个网格区域left 和right 并告诉孩子们分成它们:
section {
display: grid;
grid-template-areas: "left right";
}
div:nth-child(odd) {
grid-area: left;
}
div:nth-child(even) {
grid-area: right;
}
这是一个说明我当前状态的 JSBin:https://jsbin.com/zaduruv/edit?html,css,output
不幸的是,这些元素的反应与设置了position:absolute 完全相同。也就是说,它们都挤向顶部并相互重叠。
CSS 网格布局属性是否有可能让孩子在列中排队,就像他们通常使用position: static 所做的那样?
【问题讨论】:
-
我尝试使用 flexbox 解决这个问题:
https://jsbin.com/tujuzumaca/edit?html,css,output唯一需要确保的不是给 DIV 提供固定高度,而是让它根据内容自行获取高度。 -
@Winter 我实际上在一小时前的答案中链接到该页面;-) stackoverflow.com/questions/21588420/…
-
@ANshulSharma 我认为我们彼此误解了。其目的是让那些根据其内容具有不同高度的盒子,一个一个地平齐放置,没有间隙。我也用 flexbox 解决了这个问题,使用
flex-direction: column,但它有一个缺点,我需要在section上设置一个固定的高度,否则孩子们不会换到第二列。因此我的想法是尝试使用网格布局。
标签: css layout masonry css-grid