CSS显示的内联和内联块值之间到底有什么区别?
当前回答
块-元素取完整宽度。所有属性的高度,宽度,空白,填充工作
内联元素根据内容取高度和宽度。高度,宽度,边距底部和边距顶部无效。填充和左右边距有效。示例span和anchor。
内联块- 1。元素不取完全宽度,这就是为什么它的名称中有*inline*。所有属性,包括高度,宽度,边缘顶部和边缘底部的工作。这也适用于块级元素。这就是为什么它的名字中有*block*。
其他回答
以上所有答案都对原问题提供了重要信息。然而,有一种概括似乎是错误的。
可以将宽度和高度设置为至少一个内联元素(我能想到的)—<img>元素。
这里和这个重复的状态都接受了答案,这是不可能的,但这似乎不是一个有效的一般规则。
例子:
img { 宽度:200 px; 身高:200 px; 边框:1px纯红色; } <img src="#" />
img具有display: inline,但其宽度和高度已成功设置。
一个直观的答案
想象<span>元素在<div>中。例如,如果你给<span>元素一个100px的高度和一个红色的边框,它将看起来像这样
显示:内联
显示:inline-block
显示:块
代码:http://jsfiddle.net/Mta2b/
带有display:inline-block的元素类似于display:inline元素,但是它们可以有宽度和高度。这意味着您可以使用内联块元素作为块,同时在文本或其他元素中流动它。
支持的样式差异总结如下:
内联:只有左距、右距、左填充、右填充 内联块:边距,填充,高度,宽度
splattne的答案可能涵盖了大部分内容,所以我不会重复同样的事情,但是:内联和内联块在CSS属性direction方面的表现不同。
在下一个代码片段中,您将看到一个两个(按顺序)被呈现,就像在LTR布局中一样。我怀疑这里的浏览器自动将英语部分检测为LTR文本,并从左向右呈现。
身体{ text-align:正确; 方向:rtl; } h2 { 显示:块;/*只是显式的*/ } 跨度{ 显示:内联; } < h2 > هذا عنوان طويل < span > < /一个span > < span > < /两个跨度> < / h2 >
但是,如果我继续将显示设置为内联块,浏览器似乎会尊重direction属性,并按照从右到左的顺序呈现元素,因此会呈现两个1。
身体{ text-align:正确; 方向:rtl; } h2 { 显示:块;/*只是显式的*/ } 跨度{ 显示:inline-block; } < h2 > هذا عنوان طويل < span > < /一个span > < span > < /两个跨度> < / h2 >
我不知道是否还有其他的怪癖,我只是在Chrome上发现了这个。
显示:内联;是在句子中使用的显示模式。例如,如果你有一段话,想要突出一个词,你可以这样做:
<p>
Pellentesque habitant morbi <em>tristique</em> senectus
et netus et malesuada fames ac turpis egestas.
</p>
<em>元素有一个显示:inline;默认情况下,因为这个标记总是在句子中使用。 <p>元素有一个display: block;默认情况下,因为它既不是一个句子,也不是在一个句子中,它是一个句子块。
具有display: inline的元素;不能有高度、宽度或垂直边距。具有display: block的元素;可以有宽度,高度和边距。 如果你想为<em>元素添加一个高度,你需要将这个元素设置为display: inline-block;。现在,您可以为元素和每个其他块样式(内联块的块部分)添加高度,但它被放置在句子中(内联块的内联部分)。
行内元素
尊重他们的左右边距和填充。不是顶部/底部。 不能设置宽度或高度。 允许其他元素位于它们的左边和右边。
Inline-Block元素:
尊重所有方面的空白和填充。 可以设置宽度和高度。 允许其他元素坐在它们的左右。
块元素:
尊重所有方面的空白和填充 获取全宽度(如果宽度没有定义) 在它们之后强制换行
一个可视化的例子如下:
查看下面的代码片段以获得额外的可视化示例
.block{ background: green; width: 50px; height: 50px; margin-top: 10px; margin-bottom: 10px; display: block; } .inline-block{ background: green; width: 50px; height: 50px; margin-top: 10px; margin-bottom: 10px; display: inline-block; } .inline{ background: green; width: 50px; height: 50px; margin-top: 10px; margin-bottom: 10px; display: inline; } <div class="block"> block </div> <div class="block"> block </div> <div class="inline-block"> inline block </div> <div class="inline-block"> inline block </div> <div class="inline"> inline </div> <div class="inline"> inline </div>