这些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。
我想我应该在这个问题上添加一些新的东西,尽管目前提供的许多答案都是足够的和相关的,有一些新的CSS属性可以实现非常干净的输出,在所有浏览器上完全支持,几乎没有“黑客”。这确实远离了内联块,但它给你的结果与问题要求的相同。
这些CSS属性是网格
CSS网格是高度支持的(CanIUse),除了IE,它只需要一个-ms-前缀来允许它工作。
CSS Grid也是高度灵活的,它把表格、flex和内联块元素的所有好的部分都集中到一个地方。
创建网格时,可以指定行与列之间的间隔。默认间距已经设置为0px,但您可以将此值更改为任何您喜欢的值。
长话短说,这里有一个相关的工作示例:
身体{
背景:lightblue;
字体类型:无衬线;
}
.container {
显示:网格;
Grid-template-columns: 100px;
grid-column-gap: 0;/*不需要但有用,例如*/
grid-row-gap: 0;/*不需要但有用,例如*/
}
.box {
背景:红色;
}
.box: nth-child(甚至){
背景:绿色;
}
< div class = "容器" >
< div class = "盒子" >
你好
< / div >
< div class = "盒子" >
测试
< / div >
< / div >
字体大小: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/
注意:我已经进行了修改,以适应当包装器有子包装器时继承字母间距。