显示内联的属性差异 - * *

时间:2014-06-19 17:54:35

标签: css display

我注意到人们在1:1比较中涵盖了某些显示属性的细节,但是有很多未说明差异的内容。有人可以解释各种内联 - 某些显示标签之间的差异吗?

对w3schools这样的地方进行更详细的定义会产生奇迹。

1 个答案:

答案 0 :(得分:13)

对于具有块和内联变体的任何显示类型,唯一的区别是inline-*显示类型的框内嵌(即inline formatting context),而另一个框格式化作为块级框,与block formatting context中的其他块级元素具有大多数相同的格式约定。块级框和内联级框之间的差异深入elsewhere

关于盒子如何列出内容的一切几乎都是一样的(当然,具体情况由显示类型本身决定);任何其他细微差别都会在规范中明确说明。据我所知,实际上没有这样的差异。

如有疑问,请选择块级显示类型。如果你发现自己在询问内联级别是否合适,那么答案可能是肯定的。某些情况可能会阻止将框格式化为内联级别框,例如absolute positioning or floating,或者将其格式化为弹性项目或网格项目。结果是从inline-*变体直接转换为其常用的块变体。也就是说,inline-block转换为blockinline-table转换为tableinline-flex转换为flexinline-grid转换为grid 1}}。同样,这并不直接影响元素的内容的格式,而不是规范的格式。

每种显示类型及其内联级别对应的示例如下。


在CSS2.1中,section 9.2.4描述了blockinline-block,如下所示:

  

阻止
  该值使元素生成一个块框。

     

<强>内联块
  此值使元素生成内联级块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级框。

请注意&#34;阻止框&#34;是&#34;块级块容器&#34;的简写,块容器是可以包含块级框的东西。

您可以看到这两个值都会导致元素生成块容器框,其中的内容将始终遵循相同的格式设置规则集,但 em>块容器盒本身可以格式化为块级或内联级。

blockinline-block之间还有一个区别:内联块框始终建立新的块格式化上下文;块框仅这样做under a set of conditions。对于具有块级和内联级别对应的任何其他显示类型,这都不适用。

Section 17.2描述tableinline-table如下:

  

表格(在HTML中:表格)
  指定元素定义块级表:它是参与块格式化上下文的矩形块。

     

内联表(在HTML中:表格)
  指定元素定义内联级表:它是参与内联格式化上下文的矩形块。

Flexbox module描述flexinline-flex如下:

  

<强>柔性
  此值使元素生成块级Flex容器框。

     

<强>直列挠曲
  此值使元素生成内联级Flex容器框。

Grid Layout module描述gridinline-grid如下:

  

<强>格
  此值使元素生成块级网格容器框。

     

<强>直列格
  此值使元素生成内联级网格容器框。

同样,在所有这些场景中,无论是块级还是内联级,表,Flex容器或网格容器的行为都完全相同。 Flex容器始终为其flex项建立flex格式上下文,并且网格容器始终为其网格项建立网格格式上下文。