我有一个相对于父元素位于absolute
的元素。但是,该位置受具有垂直边距的同级元素影响。为什么尽管绝对定位的元素具有top
属性等于零,却从与具有垂直边距的同级元素相同的位置开始。
请参阅此Codepen。
在上面的代码笔中,元素div.b的位置是绝对的,但是它受同级元素div.a的影响。元素div.a应用了垂直边距。
<div class="parent">
<div class="a">
<div class="childA"></div>
<div class="childA"></div>
<div class="childA"></div>
<div class="childA"></div>
</div>
<div class="b"></div>
</div>
CSS:
body {
padding: 0;
margin: 0;
}
.parent {
position: relative;
width: 100%;
height: 100%;
background-color: blue;
}
.a {
margin: 50px;
}
.childA {
width: 30px;
height: 30px;
}
.b {
position: absolute;
width: 100%;
height: 100%;
background-color: red;
top: 0;
}
因为,正如您在回答中所说,它相对于其父对象定位。 relative
定位的元素为其子元素创建新的堆叠上下文。将.b
移出其父级,或从父级中移除position" relative;
body {
padding: 0;
margin: 0;
}
.parent {
width: 100%;
height: 100%;
background-color: blue;
}
.a {
margin: 50px;
}
.childA {
width: 30px;
height: 30px;
}
.b {
position: absolute;
width: 100%;
height: 100%;
background-color: red;
top: 0;
}
<div class="parent">
<div class="a">
<div class="childA"></div>
<div class="childA"></div>
<div class="childA"></div>
<div class="childA"></div>
</div>
<div class="b"></div>
</div>