我有几个DIV显示为内联块;它们似乎从浏览器中自动应用间距。它们的边距/填充设置为0.有没有办法在不使用负边距的情况下纠正此问题?
答案 0 :(得分:10)
HTML
<div>
a
a
a
a
</div>
这就是它呈现的方式:
a a a a
...右?
所以,如果你有这个:
<div>
<div style="display:inline-block"></div>
<div style="display:inline-block"></div>
<div style="display:inline-block"></div>
</div>
......你会得到同样的东西:
block [space] block [space] block
现在......这个问题有很多不同的解决方案。我相信最常见的是在html中注释掉空格:
<div>
<div style="display:inline-block"></div><!--
--><div style="display:inline-block"></div><!--
--><div style="display:inline-block"></div>
</div>
我不喜欢它 - 我更喜欢保持html尽可能干净。我首选的方法是将父级的font-size设置为0,然后在内联块本身上设置所需的字体大小。像这样:
div {
font-size: 0; /* removes the whitespace */
}
div div {
display: inline-block;
font-size: 14px;
}
答案 1 :(得分:2)
您无需使用负边距来抵消原始边距。
相反,您可以使用以下内容覆盖它们:
* { margin:0; }
或:
.div { margin:0; }
如果它是特定于元素的。
修改强>
看来问题可能是由于意外的空白造成的。例如:
<div style="display:inline-block">
...
</div>
<div style="display:inline-block">
...
</div>
两个分隔线之间存在空白区域,因此浏览器将打印空白区域。要解决此问题,您需要将其更改为:
<div style="display:inline-block">
...
</div><div style="display:inline-block">
...
</div>
享受并祝你好运!
答案 2 :(得分:0)
Inline-block最初是IE6 hack
这是它用于:
所以,如果你想在彼此旁边有多个div,请使用float,它将解决内联块可能导致的许多css问题,尤其是跨浏览器问题
有关内联块here第9.2.4节的更多信息
祝你好运 SP
如果不同意,请发表评论
答案 3 :(得分:0)
我发现改变父容器上的字间距的方法的另一种方法适用于我https://jsfiddle.net/1ex5gpo3/2/
$("ul li label span").each(function(index) {
alert(index + ": " + $(".price").text());
});
答案 4 :(得分:0)
您可以同时使用display: inline-block
和float: left
删除该空格。
以下是plunkr:https://plnkr.co/edit/Sn3NG77asiXO8UrrpxWD?p=preview