Flex 项目是 Flex 级别的元素,但它是块级别的元素吗?
根据CSS 灵活框布局模块第 1 级第 4 章,弹性项目被认为是在弹性级别而不是在块级别。
Flex 项目为其内容建立独立的格式化上下文。然而,弹性项目本身是弹性级别的
盒子,而不是块级盒子:它们参与容器的 Flex 格式化上下文,而不是块格式化上下文。
然而,如果你稍后阅读第4章,就会发现Flex项目的显示值将被“块化”。
blockified是否表明该元素是块级的?如果是这样,那么上面描述的“弹性项目是弹性级别”就是一个错误。
Flex 项目的显示值被块化:如果生成 Flex 容器的元素的流入子元素的指定显示是内联级值,则它将计算为其块级等效值。 (有关此类显示值转换的详细信息,请参阅 CSS2.1§9.7 [CSS21] 和 CSS Display [CSS3-DISPLAY]。)
这里的“封锁”是什么意思?另外,弹性项目是否处于弹性级别?或者它是一个块化的块级别?
如果将其解释为规范,则会得到“flex item是flex level,不是block level而是通过blockified变成block level”这样矛盾的结论。
当然,这两个规范都是正确的,但是您忘记了关键字display在第二节中。每个元素都有一个显示值,对于弹性项目,该值是block
这意味着,例如,如果您指定inline-block
它将被计算为block
。如果您指定inline-grid
,它将被计算为grid
等等。
如果生成 Flex 容器的元素的流入子元素的指定显示是内联级值,它计算出其块级等价
所以弹性项目是弹性级别的盒子,带有display: block;
值,但它们不是块级盒子。
有关的:弹性框项目的显示属性的使用
为了方便起见,想象一下你有两个世界,外部世界和内部世界。如果我们从外部看一个 Flex 项目,它是一个参与其容器的 Flex 格式化上下文的 Flex 级别框。从内部来看,它是一个块元素,这意味着 Flex 项目内的元素会将 Flex 项目视为块元素。
如果你设置inline-[flex/table/grid/block]
对于弹性项目,它将被视为[flex/table/grid/block]
容器从内部。这inline
消失了,因为它是块化的.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)