【发布时间】:2015-11-22 01:35:09
【问题描述】:
我有多个较小的固定大小的 div 浮动在容器 div 内。我希望它们等间距,以便整个块给人以居中对齐的印象。
Right now they are aligned to the left(我知道这就是 float 的工作原理)。我知道这不太可能,但只是想要一些技巧,这样我就可以实现同样的目标。
One way to do that 是计算必要的宽度(假设我需要每行 3 个 div,每个 100px 宽和 10px 边距。所以容器的总宽度应该是 100*3+60)并将该宽度应用于容器 div并设置边距自动。
#container {
width: 360px;
margin: 0px auto;
}
.items { /* these are smaller divs */
width: 100px;
margin: 10px;
float: left;
}
但是除非我专门为不同的媒体设置宽度,否则这在不同的屏幕尺寸下看起来不太好。
Another way is to use the flex display.
#container {
display: flex;
flex-wrap:wrap;
justify-content: space-between;
}
.items { /* these are smaller divs */
flex: 0 0 auto;
width: 100px;
margin: 10px;
}
它几乎达到了我的目的,但问题是当您在底行中有多个 div 时,它只是将第二个 div 放在最右侧,而不是在第二列下对齐(这也是我知道的预期行为,没有任何问题)。
那么,对于我想要实现的目标,有什么技巧/窍门吗?
更新(针对重复报告): 另一个问题的解决方案(报告与此问题相同)使用固定容器宽度,而我在上面提到我不想固定容器宽度。因此,该解决方案不是我要寻找的解决方案。
下面的 Josh 提到了完美运行的解决方案,只是更改了 justify-content: space-around ,这样即使窗口变窄,内容也能保持居中。
【问题讨论】:
-
Josh Crozier 在这里提供的解决方案是完美的、独特的,并且不需要专门为不同的媒体尺寸设置容器的宽度,就像您在您提供的链接中的解决方案中提出的那样。所以对我来说,该解决方案不起作用(我想我在问题中提到我不想修复容器的宽度)。
-
-
你改变了 justify-content: space-around in container 吗?因为对我来说它完全以单列为中心。检查 JSFiddle:jsfiddle.net/abdfahim/yyr1w5kq/8 ........这里还有 4 个案例(1 到 4 列)拍摄的图像:imgur.com/kPRd5Vv
-
是的,现在一切都很好。不知道为什么我之前测试时它没有出现居中。我已经对问题和答案投了赞成票。