今天,我们应该只使用Flexbox。
旧答案:
好的,尽管我对font-size: 0; 和not implemented CSS3 feature 的答案都投了赞成票,
尝试后我发现它们都不是真正的解决方案。
实际上,没有一种解决方法没有强烈的副作用。
然后我决定从我的HTML 源(JSP)中删除inline-block div 之间的空格(这个答案是关于这个论点),
转这个:
<div class="inlineBlock">
I'm an inline-block div
</div>
<div class="inlineBlock">
I'm an inline-block div
</div>
到这里
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>
这很丑,但可以工作。
但是,等一下...如果我在 Taglibs loops(Struts2、JSTL 等...)中生成 div 怎么办?
例如:
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour">
<s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}">
<div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div>
</s:push>
</s:iterator>
</s:iterator>
内联所有这些东西是绝对不可想象的,这意味着
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour"><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div></s:push></s:iterator>
</s:iterator>
这不可读,难以维护和理解等。
我找到的解决方案:
使用 HTML cmets 将一个 div 的结尾连接到下一个 div 的开头!
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour"><!--
--><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><!--
--><div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div><!--
--></s:push><!--
--></s:iterator>
</s:iterator>
这样您将拥有可读且正确缩进的代码。
而且,作为一个积极的副作用,HTML source,虽然被空的 cmets 感染,
将导致正确缩进;
让我们举第一个例子。在我看来,这是:
<div class="inlineBlock">
I'm an inline-block div
</div><!--
--><div class="inlineBlock">
I'm an inline-block div
</div>
比这更好:
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>