EDITAR:
hoje, devemos apenas usar o Flexbox .
RESPOSTA ANTIGA:
OK, embora eu tenha votado tanto nas respostas font-size: 0;
quanto nas not implemented CSS3 feature
respostas, depois de tentar, descobri que nenhuma delas é uma solução real .
Na verdade, não há sequer uma solução alternativa sem fortes efeitos colaterais.
Então eu decidi remover os espaços (estas respostas é sobre este argumento) entre os inline-block
divs de minha HTML
fonte ( JSP
), transformando esta:
<div class="inlineBlock">
I'm an inline-block div
</div>
<div class="inlineBlock">
I'm an inline-block div
</div>
para isso
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>
isso é feio, mas está funcionando.
Mas, espere um minuto ... e se eu estou gerando meu divs dentro Taglibs loops
( Struts2
, JSTL
, etc ...)?
Por exemplo:
<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>
Não é absolutamente possível alinhar todas essas coisas, isso significaria
<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>
que não é legível, difícil de manter e entender, etc ...
A solução que encontrei:
use comentários HTML para conectar o final de uma div ao início da próxima!
<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>
Dessa forma, você terá um código legível e recuado corretamente.
E, como efeito colateral positivo, o resultado HTML source
, embora infestado por comentários vazios, resultará corretamente recuado;
vamos dar o primeiro exemplo. Na minha humilde opinião, isso:
<div class="inlineBlock">
I'm an inline-block div
</div><!--
--><div class="inlineBlock">
I'm an inline-block div
</div>
é melhor que isso:
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>