这些 span
元素之间将有一个 4 像素宽的空间:
span {
display: inline-block;
width: 100px;
background-color: palevioletred;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
我知道我可以通过删除 HTML 中 span
元素之间的空白来摆脱这个空间:
<p>
<span> Foo </span><span> Bar </span>
</p>
我正在寻找不涉及的 CSS 解决方案:
- 改变 HTML。
- JavaScript。
原文由 Šime Vidas 发布,翻译遵循 CC BY-SA 4.0 许可协议
或者,您 现在应该使用 flexbox 来实现您以前可能使用 inline-block 实现的许多布局: https ://css-tricks.com/snippets/css/a-guide-to-flexbox/
由于这个答案变得相当流行,我正在重写它。
我们不要忘记提出的实际问题:
单独 使用 CSS 可以解决这个问题,但是没有 完全 可靠的 CSS 修复。
我在最初回答中的解决方案是将
font-size: 0
添加到父元素,然后在子元素上声明一个明智的font-size
。http://jsfiddle.net/thirtydot/dGHFV/1361/
这适用于所有现代浏览器的最新版本。它适用于 IE8。它在 Safari 5 _中不起作用_,但在 Safari 6 中有效。Safari 5 几乎是一个死浏览器( 0.33%,2015 年 8 月)。
大多数与相对字体大小相关的可能问题并不复杂。
但是,虽然如果您 特别需要 仅修复 CSS,这是一个合理的解决方案,但如果您可以自由更改 HTML(就像我们大多数人一样),我不建议这样做。
作为一名相当有经验的网络开发人员,我实际上是这样做来解决这个问题的:
是的,这是正确的。我删除了 HTML 中内联块元素之间的空格。
这很简单。这很简单。它无处不在。这是务实的解决方案。
有时您确实必须仔细考虑空格的来源。 使用 JavaScript 附加另一个元素会添加空格吗? 不,如果你做得好,就不会。
让我们用一些新的 HTML 继续一段神奇的去除空格的旅程:
http://jsfiddle.net/thirtydot/dGHFV/1362/
既然我已经用“一千种不同的方法来删除空格,三十点”让你厌烦死了,希望你已经忘记了所有关于
font-size: 0
的事情。