我注意到人们在1:1比较中涵盖了某些显示属性的细节,但是有很多未说明差异的内容。有人可以解释各种内联 - 某些显示标签之间的差异吗?
对w3schools这样的地方进行更详细的定义会产生奇迹。
答案 0 :(得分:13)
对于具有块和内联变体的任何显示类型,唯一的区别是inline-*
显示类型的框内嵌(即inline formatting context),而另一个框格式化作为块级框,与block formatting context中的其他块级元素具有大多数相同的格式约定。块级框和内联级框之间的差异深入elsewhere。
关于盒子如何列出内容的一切几乎都是一样的(当然,具体情况由显示类型本身决定);任何其他细微差别都会在规范中明确说明。据我所知,实际上没有这样的差异。
如有疑问,请选择块级显示类型。如果你发现自己在询问内联级别是否合适,那么答案可能是肯定的。某些情况可能会阻止将框格式化为内联级别框,例如absolute positioning or floating,或者将其格式化为弹性项目或网格项目。结果是从inline-*
变体直接转换为其常用的块变体。也就是说,inline-block
转换为block
,inline-table
转换为table
,inline-flex
转换为flex
,inline-grid
转换为grid
1}}。同样,这并不直接影响元素的内容的格式,而不是规范的格式。
每种显示类型及其内联级别对应的示例如下。
在CSS2.1中,section 9.2.4描述了block
和inline-block
,如下所示:
阻止强>
该值使元素生成一个块框。<强>内联块强>
此值使元素生成内联级块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级框。
请注意&#34;阻止框&#34;是&#34;块级块容器&#34;的简写,块容器是可以包含块级框的东西。
您可以看到这两个值都会导致元素生成块容器框,其中的内容将始终遵循相同的格式设置规则集,但 em>块容器盒本身可以格式化为块级或内联级。
block
和inline-block
之间还有一个区别:内联块框始终建立新的块格式化上下文;块框仅这样做under a set of conditions。对于具有块级和内联级别对应的任何其他显示类型,这都不适用。
Section 17.2描述table
和inline-table
如下:
表格(在HTML中:表格)
指定元素定义块级表:它是参与块格式化上下文的矩形块。内联表(在HTML中:表格)
指定元素定义内联级表:它是参与内联格式化上下文的矩形块。
Flexbox module描述flex
和inline-flex
如下:
<强>柔性强>
此值使元素生成块级Flex容器框。<强>直列挠曲强>
此值使元素生成内联级Flex容器框。
Grid Layout module描述grid
和inline-grid
如下:
<强>格强>
此值使元素生成块级网格容器框。<强>直列格强>
此值使元素生成内联级网格容器框。
同样,在所有这些场景中,无论是块级还是内联级,表,Flex容器或网格容器的行为都完全相同。 Flex容器始终为其flex项建立flex格式上下文,并且网格容器始终为其网格项建立网格格式上下文。