这些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。
这是相同的答案,我给了相关的:显示:内联块-什么是空间?
实际上,有一种非常简单的方法可以从内联块中删除空白,既简单又语义化。它被称为具有零宽度空格的自定义字体,它允许您使用非常小的字体在字体级别上折叠空白(当它们在单独的行上时,由浏览器为内联元素添加)。一旦你声明了字体,你只需要在容器上改变font-family,然后在子容器上再改变,瞧。是这样的:
@font-face{
font-family: 'NoSpace';
src: url('../Fonts/zerowidthspaces.eot');
src: url('../Fonts/zerowidthspaces.eot?#iefix') format('embedded-opentype'),
url('../Fonts/zerowidthspaces.woff') format('woff'),
url('../Fonts/zerowidthspaces.ttf') format('truetype'),
url('../Fonts/zerowidthspaces.svg#NoSpace') format('svg');
}
body {
font-face: 'OpenSans', sans-serif;
}
.inline-container {
font-face: 'NoSpace';
}
.inline-container > * {
display: inline-block;
font-face: 'OpenSans', sans-serif;
}
很合口味。这里是我刚刚在font-forge中制作的字体下载,并使用FontSquirrel webfont generator进行转换。我只花了5分钟。css @font-face声明包括:压缩零宽度空格字体。它在谷歌驱动器,所以你需要点击文件>下载保存到你的电脑。如果您将声明复制到主css文件中,您可能还需要更改字体路径。
字体大小:0;管理起来可能有点棘手…
我认为下面的几行代码比其他任何方法都更好,更可重用,更节省时间。我个人使用这个:
.inline-block-wrapper>.inline-block-wrapper,
.inline-block-wrapper{letter-spacing: -4px;}
.inline-block-wrapper>*{letter-spacing: 0;display: inline-block;}
/* OR better shorter name...*/
.items>.items,
.items{letter-spacing: -4px;}
.items>*{letter-spacing: 0;display: inline-block;}
那么你可以这样使用它…
<ul class="items">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
据我所知(我可能错了),但所有浏览器都支持这个方法。
解释:
这工作(也许-3px可能更好)完全按照您的预期工作。
复制并粘贴代码(一次)
然后在HTML中,只需在每个内联块的父类上使用class="items"。
您将不需要回到css,并为您的新内联块添加另一个css规则。
同时解决两个问题。
还要注意>(大于号),这意味着*/all子元素应该是内联块。
http://jsfiddle.net/fD5u3/
注意:我已经进行了修改,以适应当包装器有子包装器时继承字母间距。
通常我们在不同的行中使用这样的元素,但在display:在同一行中使用标签的内联块将删除空格,但在不同的行中则不会。
在不同的行中有标签的例子:
P跨度{
显示:inline-block;
背景:红色;
}
< p >
<span> Foo </span>
<span> Bar </span>
< / p >
标签在同一行的示例
P跨度{
显示:inline-block;
背景:红色;
}
< p >
<span> Foo </span><span> Bar </span>
< / p >
另一种有效的方法是CSS作业,对父元素使用font-size:0,并根据需要给子元素赋予font-size。
p {
字体大小:0;
}
P跨度{
显示:inline-block;
背景:红色;
字体大小:14 px;
}
< p >
<span> Foo </span>
<span> Bar </span>
< / p >
上述方法可能在某些地方不起作用,这取决于整个应用程序,但最后一种方法是这种情况的万无一失的解决方案,可以在任何地方使用。