inline
和之间的区别到底是什么inline-block
的CSS值display
?
inline
和之间的区别到底是什么inline-block
的CSS值display
?
Answers:
想象一个<span>
元素<div>
。例如,如果您将<span>
元素的高度设置为100px并带有红色边框,则其外观如下所示:
显示:内联
显示:内联块
显示:块
具有display:inline-block
的display:inline
元素类似于元素,但是它们可以具有宽度和高度。这意味着您可以将inline-block元素用作块,同时在文本或其他元素中流动它。
支持的样式的不同之处为摘要:
margin-left
,margin-right
,padding-left
,padding-right
margin
,padding
,height
,width
p
,div
获得整个宽度线(强制换行),但相对于宽度/高度和所有水平/垂直填充/利润率。内联块元素具有与块相同的行为,但没有整个换行符(其他元素可以放在它们旁边)
display: inline;
是在句子中使用的显示模式。例如,如果您有一个段落并想突出显示一个单词,则可以执行以下操作:
<p>
Pellentesque habitant morbi <em>tristique</em> senectus
et netus et malesuada fames ac turpis egestas.
</p>
该<em>
元素有一个display: inline;
默认情况下,因为这个标签是在一个句子总是使用。该<p>
元素display: block;
默认情况下有一个,因为它既不是句子,也不是句子,而是句子的一部分。
的元素display: inline;
不能具有height
或width
或垂直margin
。有一个元素display: block;
可以有width
,height
和margin
。
如果您想将添加height
到<em>
元素,你需要设置这个元素display: inline-block;
。现在,您可以height
在元素和其他所有块样式(的block
一部分inline-block
)中添加a ,但将其放置在句子中(的inline
一部分inline-block
)。
display
值时我们可以/不能做的事情。
答案中未提及的一件事是,内联元素可以在行之间中断,而内联块不能(显然是块)!因此,内联元素可用于设置文本句子和其中的块的样式,但是由于无法填充它们,因此可以改用行高。
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<hr/>
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline-block; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
以上所有答案均对原始问题提供了重要信息。但是,有一个概括似乎是错误的。
可以将宽度和高度设置为至少一个内联元素(我能想到)–该<img>
元素。
此处和在此重复状态下都接受了答案,这是不可能的,但这似乎不是有效的一般规则。
例:
该img
有display: inline
,但它width
并height
已成功设置。
splattne的答案可能涵盖了大多数内容,因此我不会重复同样的事情,而是:inline
和CSS属性的inline-block
行为有所不同direction
。
在下一个代码片段中,您可以看到one two
(按顺序)已渲染,就像在LTR布局中一样。我怀疑这里的浏览器会自动将英文部分检测为LTR文本,并从左到右进行渲染。
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
但是,如果我继续设置display
为inline-block
,则浏览器似乎会尊重该direction
属性,并按从右到左的顺序依次渲染元素,从而two one
渲染出来。
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline-block;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
我不知道是否还有其他怪癖,我只是在Chrome上凭经验发现了这一点。