内嵌块框不适合他们的容器
不知道我做错了什么,我认为通过添加边框,它将整齐地适合这4个盒子。
http://jsfiddle.net/jzhang172/x3ftdx6n/
.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>
问题在于, inline-block
元素默认情况下会呈现一些额外的空间。
为什么? 因为设置为inline-block
的div
具有一些内联元素特征。
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>
我会坚持你只添加一个属性。 一个删除空格之间的box
。 只需加上float:left;
到您的.box
类/ div。
演示:已更新
.ok{ margin:0px auto; /* ADDED */ width:300px; background:red; height:100px; box-sizing:border-box; padding:0px auto; } .box{ display:inline-block; box-sizing:border-box; width:25%; border:2px solid blue; height:100%; float:left; }
<div class="ok"> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> <div class="box">4</div> </div>