一尘不染

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

css

我注意到人们在1:1的比较中涵盖了某些显示属性的细节,但是在说明差异时还没有涉及很多。可能有人解释各种inline-之间的差异 的东西 显示标签?

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


阅读 308

收藏
2020-05-16

共1个答案

一尘不染

对于任何具有块和内联变体的显示类型,唯一的区别是,该inline-*显示类型具有以内联方式放置的框(即,[以内联格式设置的上下文),而另一种具有格式化为块级框的框,这取决于大多数情况。与[块格式化上下文]中的其他块级元素相同的格式约定。块级框和嵌入式级框之间的差异在[其他地方]已深入介绍。

关于盒子如何布置其 内容的所有内容 几乎都是相同的(当然,具体细节由显示类型本身决定);规范中将明确说明任何其他细微差别。据我所知,实际上没有这种差异。

如有疑问,请选择块级显示类型。如果您发现自己是否适合使用内联级别,则答案是否定的。某些情况下,无论如何绝对不能将框格式化为内联级框,例如[绝对定位或浮动],或者将其格式化为弹性项目或网格项目。结果是从inline-*变体直接转换为通常的块变体。即,inline- block被转换为blockinline-tabletableinline-flexflex,和inline- gridgrid。同样,这并不直接影响元素 内容 的格式,就规范而言。

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


在CSS2.1,第9.2.4节描述blockinline-block如下:

block
此值使元素生成一个阻止框。

inline-block
此值使元素生成一个内联级别的块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级别框。

请注意,“块框”是“块级块容器”的简写,并且块容器可以包含块级框。

您会看到这两个值都导致一个元素生成一个 block container box ,其中其内容将始终遵循相同的格式设置规则集,但是 block
container box本身要么被格式化为块级,要么被内联。水平。

block和之间还有另一个区别inline-block:内联块框 始终
建立新的块格式化上下文;封闭箱仅在一定条件下才能这样做。对于具有块级和行内对应项的任何其他显示类型,这并不成立。

17.2描述tableinline-table如下:

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

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

Flexbox的模块描述flexinline-flex如下:

flex
此值使元素生成块级的flex容器框。

inline-flex
此值使元素生成一个内联级别的flex容器框。

而网格布局模块描述gridinline- grid如下:

grid
此值使元素生成块级网格容器框。

inline-grid
此值使元素生成一个内联级别的网格容器框。

同样,在所有这些情况下,表,Flex容器或网格容器的行为完全相同,无论是块级还是内联级。一个弹性容器总是为其弹性项目建立一个弹性格式上下文,而一个网格容器总是为其栅格项目建立一个网格格式上下文。

2020-05-16