【发布时间】:2019-01-20 14:16:06
【问题描述】:
这是我的问题: 我有不同的 DIV,它们的宽度都相同,但 高度不同。
在大视口上,这些 DIV 应排列为两列网格。
DIV 之间的margin应该相等(垂直和水平)。
由于 DIV 应该以正确的顺序显示在移动设备上的一列中,因此每列不可能有自己的父元素。
这是我想要实现的图像:
有没有办法用纯 html/css 解决这个问题?
到目前为止,我发现的唯一解决方案是使用某种砌体 JavaScript。但我觉得必须有更好的解决方案......
到目前为止我已经尝试过:
-
使用浮动/内联块:我得到完美的行,但 4 总是从与 3 相同的高度开始。所以边距不相等。 (见:https://codepen.io/OsmaGiliath/pen/vaPqro)
// EXAMPLE I .parent { width:230px; } .children { display:inline-block; width:100px; } -
Flexbox:相同(参见:https://codepen.io/OsmaGiliath/pen/ajMgjR)
// EXAMPLE II .parent { display:flex; flex-wrap: wrap; } .children { flex:none; } -
垂直 flexbox:有效——但仅在父元素上使用 固定高度,这在我的示例中是不可能的,因为这会限制元素的增长(请参阅:https://codepen.io/OsmaGiliath/pen/ZjPdVx)
// EXAMPLE III .parent { display:flex; flex-wrap: wrap; flex-direction:column; } .children { flex:none; }
【问题讨论】:
-
看看developer.mozilla.org/en-US/docs/Web/CSS/column-count / 将其与媒体查询相结合以在 1 到 2 列之间进行调整。
-
最后一种解决方案(垂直弹性盒)是实现您想要的最佳方式。问题是:如何在桌面尺寸上定义父元素的最大高度?您不想要固定高度,但您需要定义元素从哪个点开始换行。
-
另外:div的数量是总是4个还是动态的?
-
- 嗯.. 一个固定的最大高度会带来很多新的麻烦,因为它对于所有屏幕尺寸都必须不同,并且必须随着每次内容更新而改变:( - @niemaszoka Jep,它总是 4 div .