【问题标题】:Contradiction in Definition of Inline-Level Boxes and Inline Boxes (W3C)Inline-Level Boxes 和 Inline Boxes (W3C) 定义的矛盾
【发布时间】:2018-05-11 01:48:16
【问题描述】:

W3C source for the quotes below.

'display' 属性的以下值构成一个元素 inline-level:'inline'、'inline-table' 和 'inline-block'

因此,带有display: inline-block 的元素是内联元素

内联级元素生成内联级盒子,即盒子 参与内联格式化上下文

因此,所有行内级框都参与了一个行内格式化上下文

内联框既是内联级别的,又是其内容 参与其包含的内联格式化上下文

如果所有行内级框都参与一个行内格式化上下文,并且一个行内框既是一个 inline-level box 并且参与了一个inlineformatting context,那么所有inline-level box 都是inline box 必须是真的,反之亦然。

最后,这是打破逻辑的语句:

非行内框的行内级框(如替换 行内级元素、行内块元素和行内表 元素)被称为原子内联框...

换句话说:

首先我们被告知,通过逻辑暗示,所有内联级盒子都是内联盒子。然后,我们被告知相反的情况:几个内联框(例如由带有display: inline-block 的元素生成的那些)实际上不是 内联框。

是我遗漏了什么还是引述相互矛盾?


编辑

【问题讨论】:

    标签: html css w3c


    【解决方案1】:

    标准没有矛盾,但我们必须仔细阅读才能发现差异。

    1. 行内级框是参与行内格式化上下文的框。
    2. 内联框是一个内联级框,其内容参与其包含的内联格式化上下文

    段落内的跨度元素是一个内联框,因为跨度元素内的文本参与段落的环绕内容。

    带有display: inline-block; 的元素将与周围的内容一起流动,就好像它是一个单独的内联框一样,但是由于该元素实际上会生成一个块元素框,因此元素内容不参与其包含内联格式上下文。

    【讨论】:

    • 谢谢,没错。我在我的 OP 底部添加了两个链接,希望将来能帮助其他人。第二个链接是我刚刚发布的另一个类似问题的答案(在更好地理解了这个概念之后)。它涵盖了您在此答案中提出的一些观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2023-03-11
    • 2021-06-24
    • 2017-10-26
    • 2014-04-28
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多