确实,对于 display:block, display:inline block 和 display:float
,元素的原始高度、宽度以及 padding、margin 都会被尊重和渲染,没有任何妥协。
但是当涉及到 display:inline
时,元素不会按照其原始高度和宽度进行渲染,内容的宽度和高度取决于字体大小和内容长度。
(A) 谈到 padding 和 margin,就像普通文本中的 padding 一样,水平方向上允许使用 padding 和 margin,但不允许在垂直方向上使用。添加了 padding 和 margin 后,内联元素的高度和宽度似乎增加了,但实际上,在这种情况下,内容框的大小始终与子文本大小保持恒定。margin 的主要作用是与周围元素保持间距,由于之间没有空间,因此没有应用 margin。
(B) 另外,当您检查盒模型时,也存在padding,但 padding 的真正要点是将边框从内容中推开,而实际上边框被破坏了,因为边框是为了防止元素与周围元素交叉,所以 padding 不存在。您可以看到在水平方向上的 padding 增加时,周围的元素也被推开。
我建议您先查看这两个代码,然后再回来解释,主要是两个要点(A 和 B):
https://jsfiddle.net/d89Wd/
还有我的版本,
HTML 代码
<div class="inline-block">Inline-Block</div>
<div class="block">Block</div>
<div class="inline">Inline</div>
<div class="float">Float</div>
CSS 代码
.inline{
display:inline;
font-size: 10px;
border: 1px solid red;
}
.inline-block{
display:inline-block;
}
.block{
display:block;
}
div{
background-color:blue;
color:white;
height:100px;
width:200px;
padding:10px;
margin-bottom:10px;
}
我将内联元素夹在块和浮动之间,..我保持所有div的底部边距为10像素。我改变了字体大小,因为我之前告诉过你内联元素的高度会呈现为文本字体的高度。
我建议复制这段代码并在Firefox中运行,然后检查它的框模型。你会看到内联块、块以及浮动的底部边距存在,但内联元素没有。(我会说边距填充在物理上存在,但没有产生效果,或者它们不会创建空间或推动边框)
之后,你可以通过添加一些文本来检查内联元素是否存在水平边距。
HTML代码
<div class="inline-block">Inline-Block</div>
<div class="block">Block</div>
<div class="inline">Inline</div>Hey mate, how is it going?
<div class="float">Float</div>
CSS 代码
.inline{
display:inline;
border: 1px solid red;
margin: 0px 20px 10px 0px;
padding: 15px 90px 15px 0px;
font-size: 10px;
}
.inline-block{
display:inline-block;
}
.block{
display:block;
}
div{
background-color:blue;
color:white;
height:100px;
width:200px;
margin-bottom:10px;
}