【问题标题】:CSS Spec: block-level box, block container box and block boxCSS Spec:块级盒、块容器盒和块盒
【发布时间】:2020-11-30 16:01:59
【问题描述】:

我正在阅读CSS Spec 2.1,发现这些概念很难区分:

除了后面章节中描述的表格盒和替换元素外,块级盒也是块容器盒。块容器盒要么只包含块级盒,要么建立一个内联格式化上下文,因此只包含内联级盒。并非所有的块容器盒都是块级盒:非替换的内联块和非替换的表格单元格是块容器,但不是块级盒。也是块容器的块级盒子称为块盒子。

我可以将上面的描述解释如下吗?:

【问题讨论】:

    标签: css


    【解决方案1】:

    你的解释是正确的。

    这里有一些额外的细节:

    • 表格框之所以不是块容器,是因为它建立的是表格布局,而不是块布局。内容进入单元格元素而不是表格元素,这就是为什么 cell 框是块容器而不是表格框本身。

    • 被替换的元素不包含任何其他内容,因此不能是块容器。

    • 块盒和内联块之间的唯一区别是前者是块级,而后者是内联级。因此分别显示值display: blockdisplay: inline-block。由于两者都是块容器,因此它们的内容格式没有区别。

    请注意,替换元素和表格框可以是内联级或块级。内联表和内联替换元素只是从您引用的部分中排除,因为该部分仅与块级框有关;您可以在第 9 节的其他地方或分别在 1017 部分找到对它们的引用。

    此外,即使一个块容器盒只能包含块级盒或内联级盒,您仍然可以将两者混合在同一个块容器盒中;在内部,它只是通过anonymous block boxes 分隔块级和内联级框。

    【讨论】:

    • 对视觉格式化模态的理解感觉非常复杂。特别是子主题 9.2 和 9.4。我希望标准能够更好地解释这些主题,就像它对其他主题所做的那样。
    • @Binary_10:该标准并非(始终)旨在成为 Web 开发人员的资源。它是按原样编写的,因此对于浏览器开发人员来说,所有内容都尽可能清楚地说明。也就是说,我认为 CSSWG 正在努力使现代规范更易于理解。
    • 那么对于开发人员来说,获得更深入的知识并打下坚实的基础 (CSS) 的最佳资源是什么?
    【解决方案2】:

    请记住,HTML 是一棵树,因此每个节点都可以作为(子)的父节点和(父节点的)子节点

    考虑到这一点,事情开始变得有意义,块级盒子指的是盒子充当chlid

    块级框是参与块格式化的框 上下文。

    另一方面,block container box指的是一个parent可以容纳其他人

    块容器盒子要么只包含块级盒子,要么 建立一个内联格式化上下文,因此只包含 内联框

    就像一个节点可以要么既是子节点又是父节点,HTML 节点既可以充当父节点(块容器框)也可以充当子节点(块级框)或两者兼有

    例如,如果一个节点中的子节点是不允许的(被替换元素),它就永远不可能是父节点,最多只能是子节点(块级框),不能是父节点(块容器框)

    并且没有理由阻止非块父级包含块父级。 inline-block 本身不是块,但它可以包含块级框

    重点是从父子视图更容易理解规范

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2012-08-31
      • 2016-09-03
      相关资源
      最近更新 更多