这些span元素之间将有一个4像素宽的空间:

跨度{ 显示:inline-block; 宽度:100 px; 背景颜色:浅紫红; } < p > <span> Foo </span> <span> Bar </span> < / p >

小提琴演示

我知道我可以通过删除HTML中span元素之间的空白来摆脱这个空间:

<p>
  <span> Foo </span><span> Bar </span>
</p>

我正在寻找一个CSS解决方案,不涉及:

修改HTML。 JavaScript。


当前回答

我现在遇到了这个问题from font-size:0;我发现在ie7中这个问题仍然存在,因为ie7认为“字体大小为0?!?!”你疯了吗?”-所以,在我的情况下,我有Eric Meyer的CSS重置和字体大小:0.01em;我在ie7和Firefox 9之间有1个像素的差异,所以,我认为这是一个解决方案。

其他回答

消极的保证金

你可以用负4px的边距将元素移回原位(可能需要根据父字体大小进行调整)。显然,这在旧的IE(6和7)中是有问题的,但如果你不关心这些浏览器,至少你可以保持代码格式干净。

span {
  display: inline-block;
  margin-right: -4px;
}

添加字母间距:4 px;在父CSS上添加letter-spacing:0px;到生成空间css。

跨度{ 显示:inline-block; 宽度:100 px; 背景颜色:浅紫红; vertical-align:底部; 字母间距:0 px; } p { 字母间距:4 px; } < p > <span> Foo </span> <span> Bar </span> < / p >

CSS Text Module Level 4规范定义了一个Text -space-collapse属性,它允许控制元素内部和周围的空白如何处理。

所以,关于你的例子,你只需要这样写:

p {
  text-space-collapse: discard;
}

不幸的是,在HBP回答的评论中提到,目前还没有浏览器实现这个属性(截至2016年9月)。

p { 显示:flex; } 跨度{ 浮:左; 显示:inline-block; 宽度:100 px; 背景:红色; 字体大小:30 px; 颜色:白色; } < p > <span> hello </span> <span> world </span> < / p >

我发现了一个纯CSS解决方案,在所有浏览器中都很好地为我工作:

span {
    display: table-cell;
}