【发布时间】:2014-08-01 13:20:16
【问题描述】:
提示
假设我们想在一个灵活宽度的 div 内分配一行 inline-block 元素,我们认为第一个和最后一个元素远端的空间很重要,应该是间距的一部分。
标记
<div id="whole-thing">
<!-- inline-block element, width shrinks to widest row -->
<div id="row1" class="row">
<!-- block element (100% width) -->
<div id="box1" class="box">
<div id="box2" class="box">
..
</div>
<div id="row2" class="row">
..
</div>
..
</div>
图片
IE。转成这样
进入这个:
在这种情况下,整个事物的宽度会缩小到第二行(最宽),因此该行上的任何框之间都没有间距。
但每个方框内的内容可能会有所不同,必要时间距应相应调整:
尝试
-
justify-content: space-between(或其他具有相同效果的样式/解决方法):
不是我们想要的。 -
justify-content: space-around应该是除了它分配空间with half-size spaces on either end的事实之外,这又不是我们想要的,但几乎是..
比较: -
js 破解。嗯,它有效,但我仍然希望有一种干净的方式来实现它。
-
在每行div的开头和结尾添加一个空div,然后使用
space-between。
也有效,这就是我获得上述解决方案图片的方式。但是我最终会得到一堆空的 div。
我应该为此使用表格布局(在 css 中,而不是在标记中)?如果有,怎么做?
这让我哭了。我将感谢您为解决此问题提供任何帮助。
Here's a link to fiddle
Fiddle
放置 content:'' ::before 和 ::after 行(这些伪元素是选定的直接子元素)有效地实现了上面的第 4 点(space-between + 两端的空元素),没有多余的标记.
【问题讨论】:
-
+1 - 快速提问 - #2 (
justify-content: space-around) 的图片是否与理想图片相同? (我一直在看,我看不出有什么区别。) -
一开始我也看不懂,但更容易看出整个东西的宽度是否比盒子的宽度宽。我已经更新了图片以使其更清晰:)