CSS-绝对位置受兄弟姐妹的余量影响

问题描述 投票:0回答:1

我有一个相对于父元素位于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;
} 
html css position css-position absolute
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.