边距限制:揭开谜底
当带有边距的元素嵌套在另一个元素中时,父元素封装能力会出现不一致边距。各种CSS属性,例如border、position:absolute、display:inline-block和overflow:auto,都会触发父级包含子级的边距。然而,这种行为背后的逻辑仍然难以捉摸。
最初,假设集中在边缘崩溃上。但是,W3C 规范没有对此行为提供明确的解释,并且在这种情况下不存在重叠边距。尽管如此,浏览器始终表现出相同的行为。
这个问题的关键在于,常规 div 的默认行为假设边距不包含在父级中。然而,改变此行为的所有其他 CSS 属性都意味着应包含边距。这种差异需要进一步检查。
W3C 规范:真理与神秘的混合
经过进一步审查,W3C 规范确实解决了这种行为,但提供了不连贯的解释。该规范随意结合了“自由边距”(超出父级边界的边距)和“折叠边距”(重叠的相邻边距)的概念。
这种合并给开发人员带来的问题多于答案。在这种情况下,可用边距似乎受到溢出:auto属性的影响,这是违反直觉的,因为溢出通常控制元素的内容而不是其边距。
现场演示
如所提供的代码片段中所示,现场演示生动地说明了这种奇怪的行为。带有边距 (h2) 的元素嵌套在具有不同 CSS 属性的各种父元素中。结果清楚地显示了父级包含边距的能力如何受到看似不相关的触发器的影响。
这个谜仍然存在,让开发人员在尝试破译 CSS 边距包含背后的逻辑时摸不着头脑。为了解决这个持续存在的谜团,可能需要进一步的研究和 W3C 的澄清。
以上是为什么边距限制似乎是由 CSS 中的 Overflow: Auto 控制的?的详细内容。更多信息请关注PHP中文网其他相关文章!