问题是,inline-block
默认情况下,元素渲染时会增加一些额外的空间。
为什么?因为div
set toinline-block
具有一些内联元素特性。
元素之间的空格或换行符span
将导致浏览器呈现空格。
同样,如果您在<p>
元素中编写文本,则每次点击空格键或添加换行符时,浏览器都会呈现一个空格。
同样的规则也适用于inline-block
div。源中的空格或换行符将导致呈现空格。这会产生意外的宽度,从而导致溢出或换行。
一种解决方案是删除源中元素之间的所有空格:
.ok {
width: 300px;
background: red;
height: 100px;
box-sizing: border-box;
}
.box {
display: inline-block;
box-sizing: border-box;
width: 25%;
border: 2px solid blue;
height: 100%;
}
<div class="ok"><div class="box">1</div><div class="box">2</div><div class="box">3</div><div class="box">4</div></div>
另一种方法设置font-size: 0
在父级上,并在必要时恢复子级上的字体:
.ok {
width: 300px;
background: red;
height: 100px;
box-sizing: border-box;
font-size: 0;
}
.box {
display: inline-block;
box-sizing: border-box;
width: 25%;
border: 2px solid blue;
height: 100%;
font-size: 16px;
}
<div class="ok">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
其他选项包括负边距、省略结束标签、使用注释标签、浮动和弹性框。有关更多详细信息,请参阅这篇文章: