为什么top:0与position:绝对不工作如果另一个元素在这里有margin-top?

Jit*_*yas 3 html css

为什么top:0position:absolute没有在这里工作?

我想提一下,在这种情况下,我无法控制除了以外的任何其他元素 .heatmap

body {
  position: relative;
  margin: 0;
  padding: 0
}

.section1 {
  margin-top: 107px;
  border: 1px solid green
}

.heatmap {
  z-index: 2147483642;
  top: 0px;
  left: 0px;
  position: absolute;
  width: 1425px;
  height: 1110px;
  opacity: 0.7;
  background: red
}
Run Code Online (Sandbox Code Playgroud)
<div class="section1">something</div>

<div class="heatmap">hamara heatmap</div>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Que*_*tin 5

您遇到了折叠边距.

heatmap定位相对于具有所述最近的祖先position static.这是body元素.

第一个孩子body有一个margin-top.

该边缘通过顶部塌陷body并将身体元素向下推离视口边缘.

您可以通过将轮廓应用于body元素来查看.

body {
  position: relative;
  margin: 0;
  padding: 0;
  outline: solid pink 10px;
}

.section1 {
  margin-top: 107px;
  border: 1px solid green
}

.heatmap {
  z-index: 2147483642;
  top: 0px;
  left: 0px;
  position: absolute;
  width: 1425px;
  height: 1110px;
  opacity: 0.7;
  background: red
}
Run Code Online (Sandbox Code Playgroud)
<div class="section1">something</div>

<div class="heatmap">hamara heatmap</div>
Run Code Online (Sandbox Code Playgroud)

为避免这种情况,请防止边距折叠.这最容易通过在身体上使用填充而不是热图上的边距来完成.

body {
  position: relative;
  margin: 0;
  padding: 107px 0 0 0;
  outline: solid pink 10px;
}

.section1 {
  border: 1px solid green
}

.heatmap {
  z-index: 2147483642;
  top: 0px;
  left: 0px;
  position: absolute;
  width: 1425px;
  height: 1110px;
  opacity: 0.7;
  background: red
}
Run Code Online (Sandbox Code Playgroud)
<div class="section1">something</div>

<div class="heatmap">hamara heatmap</div>
Run Code Online (Sandbox Code Playgroud)