元素已从块级元素更改为内联元素。内联元素的典型特征是它们遵循标记中的空格。这就解释了为什么元素之间会生成一个空格间隙。
(示例)
有几种解决方法可用于解决此问题。
方法1-从标记中删除空格
示例1-注释空格:
(示例)
<div>text</div><div>text</div><div>text</div><div>text</div><div>text</div>
例子2 - 去除换行符:(示例)
<div>text</div><div>text</div><div>text</div><div>text</div><div>text</div>
示例 3 - 在下一行关闭标签的一部分 (示例)
<div>text</div
><div>text</div
><div>text</div
><div>text</div
><div>text</div>
示例4 - 在下一行关闭整个标签:(示例)
<div>text
</div><div>text
</div><div>text
</div><div>text
</div><div>text
</div>
方法二 - 重置font-size
由于inline
元素之间的空格是由font-size
决定的,因此您可以简单地将font-size
重置为0
,从而删除元素之间的空格。
只需在父元素上设置font-size: 0
,然后为子元素声明一个新的font-size
。这个方法可行,如此示例所示(example)
#parent {
font-size: 0;
}
#child {
font-size: 16px;
}
这种方法非常有效,因为它不需要更改标记; 但是,如果使用
em
单位声明子元素的
font-size
,则无法工作。因此,建议从标记中删除空格,或者替代地
浮动元素,从而避免
inline
元素生成的空间。
第三种方法-将父元素设置为
display:flex
在某些情况下,您还可以将父元素的
display
设置为
flex
。
(示例)
这实际上消除了
受支持的浏览器中元素之间的空格。不要忘记添加适当的供应商前缀以获得其他支持。
.parent {
display: flex;
}
.parent > div {
display: inline-block;
padding: 1em;
border: 2px solid #f00;
}
.parent {
display: flex;
}
.parent > div {
display: inline-block;
padding: 1em;
border: 2px solid #f00;
}
<div class="parent">
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
</div>
附注:
使用负边距来消除行内
元素之间的空格是极不可靠的。如果有其他更优化的解决方案,请不要使用负边距。
float: left
并居中它们的容器。在我的测试中没有间隙。 - Steampunkery