一般网络上谈到关于position:absolute的绝对定位问题,有些地方会说:绝对定位元素相对的元素是它最近的一个已定位祖先,若没有这样的祖先则相对于body进行定位。
这句话并不完全正确
应参考W3school的解释:绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
请看如下代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body {
height: 100%;
border: 1px solid;
margin: 80px;
position: relative;
}
.box {
position: absolute;
top: 100px;
left: 100px;
width: 100px;
height: 100px;
background-color: red;
}
</style>
</head>
<body>
<div class="box">
</div>
</body>
</html>
效果为:
当不给html/body元素设置定位时:
可以发现该结论并不成立,此时该box绝对定位元素是根据初始包含块(视口)来定位的。
特此记录一下,感谢群北梦大佬!北梦NB!