为何inline-level子盒会与父inline-level盒处于同一line box?
已知在Inline Layout中,兄弟盒会彼此相邻排布。根据规范内容:
由不包含块级盒的块容器盒建立inline格式化上下文,在此上下文中盒从包含块顶部开始水平依次排布,水平边距、边框和内边距会被保留,可采用不同垂直对齐方式,容纳这些盒的矩形区域称为line box。
但目前未找到明确说明inline-level盒(示例中的#child)会与父inline-level盒(示例中的#parent)处于同一line box的内容。已理解inline-level兄弟盒的排布逻辑,但对Inline Layout中的父子盒布局关系存在疑问,示例代码如下:
<div> <span id="parent"> Hi <span id="child">Hello</span> </span> </div>
在Inline格式化上下文(IFC)中,父inline-level盒(比如示例里的#parent)本质上是一个内联容器盒,它的内容(包括文本节点Hi和子inline-level盒#child)都会被视为该容器的"inline-level子内容",这些内容会共同参与到同一个line box的排布中。
内联容器盒本身不会创建新的line box,除非触发了换行或者存在white-space: pre这类强制换行的样式规则。它仅起到包裹内部inline-level内容的作用,所有被包裹的内容会和容器本身的文本内容(若存在)一起,在当前line box中水平排列,遵循垂直对齐规则。
简单来说,#parent作为内联容器,它的占位和内部的Hi文本、#child盒子是融为一体的,三者同属一个line box中的inline-level元素,不会因父子关系被分割到不同line box,除非内容长度超出包含块宽度触发换行。
内容的提问来源于stack exchange,提问作者gus

