【发布时间】:2016-03-07 18:42:58
【问题描述】:
如果我有这样的html:
<div id="a">
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
<div>e</div>
<div>f</div>
<div>g</div>
<div>h</div>
<div>i</div>
</div>
我知道我可以使用flex 框、justify-content: space-around 和flex-wrap:wrap 将项目很好地隔开,如图中的红色框。但我想知道,是否有可能仅使用 css 使项目彼此分开,以便项目垂直和水平展开,就像在绿色图像中它会尝试放置相同的数字一样每行/行中的项目数(只要它们都是相同的尺寸)?
我感兴趣的是您事先不知道主 div #a 中有多少项目,并且您也不知道它们的宽度。
这是一个红框版本的 js-fiddle:https://jsfiddle.net/p0Lahgbj/
【问题讨论】:
-
如果盒子是 10 或 11,应该如何分配?
-
@fcalderan 我想一个底层算法会尝试最小化或最大化某些东西 - 例如最小化每行内容的差异。如果有 11 行,最好有 4 行,2 行每行 3 个盒子,最后 2 行每行 2 个盒子。 10个也许可以做3行,2个4个盒子,1个2个盒子?我不知道,我只是想知道这是否是 css 可以以任何近似方式做的事情。
-
如果盒子是 10 并且您将它们放置在 4-4-2 中,则差异为 2。如果您将它们放置在 3-3-3-1 中,则差异再次为 2,因此在这两种情况下您有相同的最小化:您应该在实施解决方案之前明确定义所有可能的情况(或可预测的行为)。
-
很抱歉,您根本不清楚您想要什么。到目前为止我收集的内容:您有未知数量的盒子,并且这些盒子的宽度未知(它们的宽度是否相同?您是否还需要使它们的宽度相同的东西?)应该确定盒子的位置通过框的宽度(根据您对 Thomas Orlitas 答案的评论)和它们的数量(根据您的初始问题)。但具体如何?什么优先?你有什么算法应该如何工作?您是否 100% 确定自己想要什么?因为现在变数太多了。
标签: css