display:inline和display:inline-block有什么区别?

Log*_*aul 578 css display

CSS的值inlineinline-block值之间究竟有什么区别display

spl*_*tne 1313

一个直观的答案

想象一下<span>里面的一个元素<div>.例如,如果为<span>元素指定高度为100px和红色边框,则它将如下所示

显示:内联

显示:内联

display:内联块

display:内联块

显示:块

在此输入图像描述

代码:http://jsfiddle.net/Mta2b/

元素与元素display:inline-block相似display:inline,但它们可以具有宽度高度.这意味着您可以在文本或其他元素中使用内联块元素作为块.

支持的样式与摘要的区别:

  • 内联:只margin-left,margin-right,padding-left,padding-right
  • 内联块:margin,padding,height,width

  • @ user2316667和宽度 (7认同)
  • 很棒的直觉.所以唯一的区别是内联元素的height属性不能设置? (5认同)
  • @ user2316667和@OscarCalderon:同样,内联元素不关心垂直边距和填充,下一个元素将放在同一行(后面没有换行符).块元素如`p`,`div`获得整条宽度线(强制换行)但尊重宽度/高度和所有水平/垂直填充/边距.内联块元素与块具有相同的行为但没有整行换行(其他元素可以放在它们旁边) (2认同)
  • padding-top和padding-right也会影响内联元素的显示效果,造成一些混乱。 (2认同)
  • @ manuman94不,这并不意味着.所有不同的显示类型都有用例. (2认同)

Wou*_*r J 124

display: inline;是一种在句子中使用的显示模式.例如,如果您有一个段落并且想要突出显示单个单词,那么:

<p>
    Pellentesque habitant morbi <em>tristique</em> senectus
    et netus et malesuada fames ac turpis egestas.
</p>
Run Code Online (Sandbox Code Playgroud)

默认情况下,该<em>元素具有display: inline;,因为此标记始终用于句子中.该<p>元素display: block;默认具有,因为它既不是句子也不是句子,它是一个句子块.

一个元素display: inline; 不能有一个height或一个width或一个垂直margin.一个元素display: block; 可以有一个width,heightmargin.
如果您想将添加height<em>元素,你需要设置这个元素display: inline-block;.现在你可以添加一个height元素和每个其他块样式(block部分inline-block),但它被放在一个句子(inline部分inline-block)中.

  • 很棒的答案!**tl; dr** - 如果要调整*inline*元素的大小,可以使用*inline-block*作为显示类型. (11认同)
  • 小修正:内联元素*可*具有水平边距(右,左),但*不*垂直边距(顶部,底部) (7认同)

Ali*_*Ali 12

答案中没有提到的一点是内联元素可以在行间断开而内联块不能(并且明显阻塞)!因此内联元素可用于设置文本和块内部句子的样式,但由于它们无法填充,因此您可以使用行高.

<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>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ale*_*s84 6

以上所有答案都为原始问题提供了重要信息。然而,有一个概括似乎是错误的。

可以将宽度和高度设置为至少一个内联元素(我能想到的)——<img>元素。

此处和此重复声明都接受了答案,表明这是不可能的,但这似乎不是有效的一般规则。

例子:

img {
  width: 200px;
  height: 200px;
  border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
<img src="#" />
Run Code Online (Sandbox Code Playgroud)

imgdisplay: inline,但它widthheight已成功设置。

  • 不,我不是。img-tags 是一个“替换元素”,这基本上意味着内容被替换,因此它的行为就像一个内联块元素。是的,实际的默认属性(浏览器计算的属性是内联的)。但唯一的原因是因为 inline-block 直到 CSS2 才被引入,因此它是一个“行为类似于 inline-block 元素的内联元素”,因为它被其内容所取代。即您没有为元素设置高度/宽度,而是在其内容上设置它 - 奇怪,是的。我知道。https://drafts.c​​sswg.org/css2/conform.html#replaced-element (7认同)
  • 实际上,img-tag 将 display-inline 作为其默认显示值。这就是为什么可以设置宽度和高度的原因。 (2认同)