I created two elements together in html and made each an inline-block. I found that there was always a gap between these two elements but actually I didn't set any padding/margin attibutes for them. Could someone tell me why and how I can fix this gap?
Asked
Active
Viewed 4.8k times
17
-
If there's any white-space at all between the two elements that white-space will collapse into a single space, per the spec. – David Thomas Apr 18 '12 at 11:01
-
Have you got the code? Maybe a JS fiddle? You should really accept answers to some of your questions too, it puts people off answering :) – Mathew Thompson Apr 18 '12 at 11:02
4 Answers
38
CSS:
span {
display: inline-block;
}
HTML:
<span>This will have</span>
<span>a gap between the elements</span>
<span>This won't have</span><span>a gap between the elements</span>

Juan G. Hurtado
- 2,057
- 16
- 25
19
You can remove whitespace and keep nice code formatting using HTML comments.
<span>1</span><!--
--><span>2</span><!--
--><span>3</span>

ThinkingStiff
- 64,767
- 30
- 146
- 239
12
when you use inline-blocks
, to remove the margin just apply word-spacing: -3px;
and letter-spacing: -3px;
to the parent container and then revert these rules on inline-block elements with word-spacing: normal;
and letter-spacing: normal;
e.g. with this basic markup
<div>
<span>...</span>
<span>...</span>
<span>...</span>
</div>
the minimal CSS code is
div {
word-spacing: -3px;
letter-spacing: -3px;
}
span {
word-spacing: normal;
letter-spacing: normal;
display: inline-block;
}
Another possibility (that I don't recommend but it could useful for you to know, anyway) is to set font-size: 0;
to the parent container.

Fabrizio Calderan
- 120,726
- 26
- 164
- 177
2
This is a weird behavior, which can be fixed, changed your markup to something like this.
<div class="inline">
first
</div><div class="inline">
second
</div>
Do not put any space, when defining another inline element.

Starx
- 77,474
- 47
- 185
- 261