今天,我们应该只使用Flexbox。
旧的回答:
好吧,尽管我已经投票赞成font-size: 0;和未实现的CSS3特性的答案,
经过尝试,我发现没有一个是真正的解决方案。
实际上,没有一种解决方法没有强烈的副作用。
然后我决定从我的HTML源代码(JSP)中删除内联块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>
这很难看,但很管用。
但是,等一下……如果我生成我的div在Taglibs循环(Struts2, JSTL等…)?
例如:
<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注释将一个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源代码虽然充斥着空洞的注释,
将导致正确缩进;
我们来看第一个例子。在我看来,这一点:
<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>