我注意到人们在1:1的比较中涵盖了某些显示属性的细节,但是在说明差异时还没有涉及很多。可能有人解释各种inline-之间的差异 的东西 显示标签?
对w3schools之类的地方进行更详细的定义会产生奇迹。
对于任何具有块和内联变体的显示类型,唯一的区别是,该inline-*显示类型具有以内联方式放置的框(即,[以内联格式设置的上下文),而另一种具有格式化为块级框的框,这取决于大多数情况。与[块格式化上下文]中的其他块级元素相同的格式约定。块级框和嵌入式级框之间的差异在[其他地方]已深入介绍。
inline-*
关于盒子如何布置其 内容的所有内容 几乎都是相同的(当然,具体细节由显示类型本身决定);规范中将明确说明任何其他细微差别。据我所知,实际上没有这种差异。
如有疑问,请选择块级显示类型。如果您发现自己是否适合使用内联级别,则答案是否定的。某些情况下,无论如何绝对不能将框格式化为内联级框,例如[绝对定位或浮动],或者将其格式化为弹性项目或网格项目。结果是从inline-*变体直接转换为通常的块变体。即,inline- block被转换为block,inline-table对table,inline-flex对flex,和inline- grid到grid。同样,这并不直接影响元素 内容 的格式,就规范而言。
inline- block
block
inline-table
table
inline-flex
flex
inline- grid
grid
以下是每种显示类型及其内联级别对应项的示例。
在CSS2.1,第9.2.4节描述block和inline-block如下:
inline-block
block 此值使元素生成一个阻止框。 inline-block 此值使元素生成一个内联级别的块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级别框。
block 此值使元素生成一个阻止框。
inline-block 此值使元素生成一个内联级别的块容器。内联块的内部被格式化为块框,元素本身被格式化为原子内联级别框。
请注意,“块框”是“块级块容器”的简写,并且块容器可以包含块级框。
您会看到这两个值都导致一个元素生成一个 block container box ,其中其内容将始终遵循相同的格式设置规则集,但是 该 block container box本身要么被格式化为块级,要么被内联。水平。
block和之间还有另一个区别inline-block:内联块框 始终 建立新的块格式化上下文;封闭箱仅在一定条件下才能这样做。对于具有块级和行内对应项的任何其他显示类型,这并不成立。
17.2描述table和inline-table如下:
table(在HTML中:TABLE) 指定一个元素定义一个块级表:它是一个矩形块,它参与块格式化上下文。 inline-table(在HTML中:TABLE) 指定一个元素定义一个内联级表:它是一个参与内联格式上下文的矩形块。
table(在HTML中:TABLE) 指定一个元素定义一个块级表:它是一个矩形块,它参与块格式化上下文。
inline-table(在HTML中:TABLE) 指定一个元素定义一个内联级表:它是一个参与内联格式上下文的矩形块。
该Flexbox的模块描述flex和inline-flex如下:
flex 此值使元素生成块级的flex容器框。 inline-flex 此值使元素生成一个内联级别的flex容器框。
flex 此值使元素生成块级的flex容器框。
inline-flex 此值使元素生成一个内联级别的flex容器框。
而网格布局模块描述grid和inline- grid如下:
grid 此值使元素生成块级网格容器框。 inline-grid 此值使元素生成一个内联级别的网格容器框。
grid 此值使元素生成块级网格容器框。
inline-grid 此值使元素生成一个内联级别的网格容器框。
同样,在所有这些情况下,表,Flex容器或网格容器的行为完全相同,无论是块级还是内联级。一个弹性容器总是为其弹性项目建立一个弹性格式上下文,而一个网格容器总是为其栅格项目建立一个网格格式上下文。