child 的 width % 的标准是多少 positioned: absolute

What's the standard of width % for child positioned: absolute

据我所知,child的宽度百分比标准是parent的内容框(只有内容,没有填充或边距。)。因此,如果 parent 中有填充且 child 的宽度为 100%,则 child 的宽度小于 parents。但是,如果我将 child 定位为绝对值,将 parent 定位为相对值,那么 child 的宽度就等于 parent 的宽度,无论 [= 中的填充和边距如何27=]秒。像这样:

<div class="first">HI
<div class="second">
HELLO
</div>
</div>

css代码

 .first{
 background-color: yellow;
 width:100px;
 height:100px;
 padding:10%;
 position:relative;

}
.second{
background-color: blue;
position:absolute;
width: 100%;
height:100%;
opacity:40%;
 }

尽管 parent 的位置和相对位置 Child 完全依赖于 '.first'。这种情况下child的宽度标准是多少?

position:absolute的%标准是最近定位的祖先块,如果没有定位祖先块,它是相对于body元素的。在你的情况下,因为第一个是相对定位的,第二个将是相对于第一个的,如果你删除第一个的位置属性,第二个将相对于 body 定位。

你也可以检查这个 - https://www.w3schools.com/css/css_positioning.asp

此代码段显示了将第二个 div 设置为相对位置然后是绝对位置的结果。您可以看到绝对定位元素采用其父元素的宽度,包括填充。

.first {
  background-color: yellow;
  width: 100px;
  height: 100px;
  padding: 10%;
  position: relative;
}

.second {
  background-color: blue;
  width: 100%;
  height: 100%;
  opacity: 40%;
}

.relative {
  position: relative;
}

.absolute {
  position: absolute;
}
<h2>The blue square has relative position</h2>
<div class="first">HI
  <div class="second relative">
    HELLO
  </div>
</div>
<h2>The blue square has absolute position</h2>
<div class="first">HI
  <div class="second absolute">
    HELLO
  </div>
</div>

原因似乎是:

when a box has position: absolute its containing box is the parent's padding box.

请参阅已接受的答案:Absolute positioning ignoring padding of parent 尽管我正在努力在实际的标准文档中找到对它的确切描述,但如果有人能指出主要参考资料就更好了。

更新:感谢指出这一点的 Temani Afif which has info. from an actual specification