含有漂浮元素的挡路是什么?

2022-03-17 00:00:00 html css css-position css-float

In css2.1 spec,写着:

浮动框将向左或向右移动,直到其外边缘接触到包含挡路的边缘或另一个浮动的外边缘。

我想知道浮动元素的包含挡路是什么,我测试了一下:

body {
    position: relative;
    margin: 5px;
    padding: 10px;
}

p {
    float: left;
    position: absolute;
    margin: 10px;
}

<body>
    <p>hehe</p>
</body>

根据css2.1 spec,包含挡路的绝对定位元素是最近定位的挡路容器的填充盒。

但在上面的代码中,被浮动的元素被浮动到内容框边界。我不知道怎么找到浮动元素的包含挡路。


解决方案

您问题的前提有缺陷。绝对定位的元素不能浮动,浮动也不能绝对定位。发件人section 9.7:

[.]如果‘position’的值为‘Absolute’或‘Fixed’,则该框是绝对定位的,‘Float’的计算值为‘None’[.]

所以您在这里不会试图找到包含浮点的挡路。您正在尝试查找已缩写元素的包含挡路。

话虽如此,如果您一定要知道,浮点数的包含挡路与我在my answer to your previous question中描述的相对定位或非定位元素是相同的,因为浮点数不能省略。

相关文章